Chciałem napisać funkcję ze zmienną listą argumentów. Chcę poznać moje opcje. Jestem prawie pewien, że przeszedłem przez klasę szablonów doładowania, która została zaprojektowana do tego celu, ale nie mogę wymyślić jej nazwy? Czy ktoś może mi powiedzieć? czy ja to wymyśliłem? DziękiListy zmiennych zmiennych z doładowaniem?
8
A
Odpowiedz
7
Jeśli musisz zaakceptować zmienną liczbę argumentów tego samego typu, podjęcie zwykłego pojemnika byłoby bardzo proste. Stworzenie pojemnika jednak można złagodzić stosując Boost.Assign:
void f(const std::vector<int>& vec) {}
f(boost::assign::list_of(1)(2)(3)(4));
Alternatywnie można przejść do operatora przeciążenia (np operator()
lub operator<<
) siebie, podobne do podejścia przyjętego przez standardowe strumienie Biblioteka:
op() << arg1 << arg2 << arg3;
Jeśli naprawdę chcesz zapewnić bezpieczną dla typu funkcję językową (bez użycia funkcji C++ 0x), pomocna może być Boost.Preprocessor. Ogólny przykład:
#define OUT(z, n, name) << name ## n
#define MAKE_FUNC(z, n, unused) \
template<class T BOOST_PP_ENUM_TRAILING_PARAMS(n, class T)> \
void func(T t BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(n, T, t)) { \
std::cout << t BOOST_PP_REPEAT(n, OUT, t) << std::endl; \
}
BOOST_PP_REPEAT(9, MAKE_FUNC, ~) // generates func() versions taking 1-10 arguments
func(1, "ab", 'c'); // prints "1abc"
Powiązane problemy
- 1. utworzyć słownik z listy zmiennych
- 2. Jak używać zmiennych łańcuchowych do tworzenia listy zmiennych dla ddply?
- 3. Lista R ze zmiennych o nazwach zmiennych
- 4. Nazwa zmiennych zmiennych obiektu PHP?
- 5. Dlaczego przypisanie do listy zmiennych jest niespójne?
- 6. Znajdowanie listy wszystkich zmiennych podwójnie podkreślonych?
- 7. Listy inicjujące C++ dla wielu zmiennych
- 8. Dołącz kilka zmiennych do listy w Pythonie
- 9. Przesyłanie do ogólnej listy zmiennych typu dynamicznego
- 10. Zmienione względem zmiennych zmiennych pod względem przechwytywania
- 11. dostępu zagnieżdżonych zmiennych zmiennych w ansibl
- 12. Wartości domyślne zmiennych instancji i zmiennych lokalnych
- 13. pobieranie wszystkich zmiennych statycznych z klasy do tablicy/listy
- 14. Wiele wartości jednej działce z listy zmiennych argument Sass
- 15. Mnożenie zmiennych
- 16. Wiele zmiennych
- 17. Związek dwóch zmiennych zbiorów
- 18. Dziurkowanie z doładowaniem :: asio
- 19. Jak rozpakować listę z mniejszą ilością zmiennych?
- 20. Formula z numerem dynamicznego zmiennych
- 21. SPARQL: łączenie zmiennych z literałów
- 22. Dziedziczenie zmiennych środowiskowych z GNU Parallel
- 23. Przekazywanie elementów listy jako parametrów do funkcji o zmiennych argumentach
- 24. Dlaczego funkcja Fsharp Interactive umożliwia przechwytywanie zmiennych zmiennych przez zamknięcia?
- 25. Jak importować pakiety zmiennych w Pythonie, jak przy użyciu zmiennych zmiennych ($$) w PHP?
- 26. Porównywanie 2 obiektów i pobieranie listy zmiennych o różnych wartościach
- 27. Czytaj JSON i przypisać do listy sprawiają zmiennych
- 28. Haskell: gdzie klauzula odnosząca się do zmiennych zmiennych w lambda
- 29. Python: Przekazywanie zmiennych między funkcjami
- 30. Założenia ustawień zmiennych Sympy w stosunku do innych zmiennych
Masz na myśli zmienną liczbę argumentów, ale jeden typ, czy też dowolne typy? –
Nie jestem pewien, co dokładnie zapewniła biblioteka, nie mogę go przenieść, wydaje mi się, że była to jakaś poprawa w stosunku do va_list - prawdopodobnie bezpieczeństwa typu – aukm
Czy twoja funkcja musi tylko przyjmować argumenty jednego typu, czy nie? –