Funktion mit variabler Parameteranzahl ala printf
-
Hallo zusammen
Bin mir leider nicht sicher ob dies nun ein C oder C++ Problem ist.
Ich habe eine Funktion mir variabler Anzahl von Parameter:
void Test(const wchar_t *format, ...) { String sData; va_list vaPtr; va_start(vaPtr, format); //return always the data sData.vprintf(format, vaPtr); }
Diese Funktion möchte ich nun in einer weitern Funktion Kapseln.
Ist dies überhaupt mit einer variablen Parameteranzahl möglich?MfG Stephan
-
Du willst Variadic Templates, keine Ellipse.
-
Was willst du überhaupt bewerkstelligen?
-
Ich vermute nein (ohne Variadic Templates). Mach es einfach so wie bei printf und vprintf (Google hilft weiter).
-
314159265358979 schrieb:
Du willst Variadic Templates, keine Ellipse.
Was ist an Variadic Templates besser als an einer Ellipse? Ich hab Ellipsen schon nie gebraucht, Variadic Templates schauen auch nicht viel besser aus.
-
9876546345342 schrieb:
314159265358979 schrieb:
Du willst Variadic Templates, keine Ellipse.
Was ist an Variadic Templates besser als an einer Ellipse? Ich hab Ellipsen schon nie gebraucht, Variadic Templates schauen auch nicht viel besser aus.
Eines der wichtigsten Gründe ist: Typsicherheit.
Dann natürlich auch, dass alles zur Compile-Time passiert im Gegensatz zu Ellipsen.
-
Mentras schrieb:
Dann natürlich auch, dass alles zur Compile-Time passiert im Gegensatz zu Ellipsen.
Was heisst, dass aus einem variadischen printf-Äquivalent etwa hundert verschiedene Funktionen generiert werden müssen.
-
weiterdenker schrieb:
Mentras schrieb:
Dann natürlich auch, dass alles zur Compile-Time passiert im Gegensatz zu Ellipsen.
Was heisst, dass aus einem variadischen printf-Äquivalent etwa hundert verschiedene Funktionen generiert werden müssen.
Im Durchschnittsfall wohl eher 4 oder 5 Funktionen, aber wen interessiert das überhaupt? Oder worauf willst du hinaus?
-
Außerdem kann man bei Variadic Templates non-PODs übergeben.
-
Mentras schrieb:
9876546345342 schrieb:
314159265358979 schrieb:
Du willst Variadic Templates, keine Ellipse.
Was ist an Variadic Templates besser als an einer Ellipse? Ich hab Ellipsen schon nie gebraucht, Variadic Templates schauen auch nicht viel besser aus.
Eines der wichtigsten Gründe ist: Typsicherheit.
Dann natürlich auch, dass alles zur Compile-Time passiert im Gegensatz zu Ellipsen.Klar, aber wozu braucht man sowas? Für printf und sonst?
-
std::bind, std::tuple, std::function, um nur drei zu nennen. Ansonsten kann ich mir so was für Factories gut vorstellen, und es dürfte eine Menge Template-Metaprogrammierung stark vereinfachen.
-
Beispiele aus der Standardbibliothek: std::tuple, std::function, std::bind, std::thread etc
Ist eigentlich immer dann sinnvoll wenn eine variable Anzahl an Parametern möglich ist.