Funktion mit unendlich vielen Parametern...
-
Hallo!
Hab schon dazu gegoogelt, leider nicht wirklich was gefunden...
Also ich möchte einfach so eine Funktion wie sprintf(); machen...
Also dass einfach beliebig viele Parameter übergeben werden können!Wie kann ich das realisieren?
Vielen dank!
mfg
mitos
-
Das geht theoretisch mit der Ellipse (…), aber das ist nur in C halbwegs vertretbar, denn wenn du eine solche Funktion mit C++-Objekten fütterst erzeugst du undefiniertes Verhalten.
-
hmm wie könnte ich dann sowas, also beliebig viele parameter in c++ realisieren?
danke,
mfg
mitos
-
In C++0x mit Variadic Templates. In C++98 könntest du Boost.Preprocessor benutzen um den Code für, sagen wir, Funktionen mit 1-20 Parametern zu erzeugen.
-
Hallo
Wenn es sich bei den Paraetern immer um den gleichen Typ handelt, kannst du auch einen std::vector benutzen. Vielleicht sogar in Verbindung mit boost::any. das habe ich mir aber noch nicht angeschaut.
chrische
-
Ist tupel dafür nicht auch geeignet?
-
hmm ok werd das jetzt mal versuchen, hätte noch ne andere frage:
wenn ich sowas deklariere:
char buffer[256][256];wie kann ich es anstellen, dass ich das array einer funktion übergeben kann?
gibt es eine andere möglichkeit als void func(char buf[256][256]); ??
danke
mfg
mitos
-
mitos schrieb:
hmm ok werd das jetzt mal versuchen, hätte noch ne andere frage:
wenn ich sowas deklariere:
char buffer[256][256];wie kann ich es anstellen, dass ich das array einer funktion übergeben kann?
gibt es eine andere möglichkeit als void func(char buf[256][256]); ??
danke
mfg
mitosdiese Deklaration ist äquivalent zu
void func(char (*buf)[256]);
dir Funktion erhält also einen Zeiger auf die erste Spalte des Arrays.
Eine andere Möglichkeit ist die Übergabe per Referenz:
void func(char (&buf)[256][256]);
hierbei wird die Konvertierung in einen Pointer unterdrückt.
Und nicht zuletzt
void func(char (*buf)[256][256]);
geht natürlich auf, wenn du dann entsprechend func(&buffer) schreibst.
-
ok vielen dank!
mfg
mitos