Funktionen mit unbestimmter Parameteranzahl
-
Hallo, vielleicht kennt jemand die Funktion wsprintf aus der Winapi. Dort geht ja aus dem übergebenen String die Anzahl und Art der Parameter hervor.
Ist es möglich, so eine Funktion selbst zu deklarieren ?
-
Hi,
ich kenne die Funktion wsprintf aus der Winapi nicht. Aber prinzipiell brauchst du (meiner Meinung nach) eine variable Anzahl von Parametern nicht. Wenn du eine variable Anzahl des gleichen Typs übergeben möchtest, benutze die Vector Klasse oder einen Array oder eine Liste o.ä.
Bei verschiedenen Typen: Das lässt sich mit Polymorphie leicht erreichen.
-
Hallo, über den Nutzen lässt sich streiten, mich würde interessiern wie man das macht.
-
imson schrieb:
Ist es möglich, so eine Funktion selbst zu deklarieren ?
Ja, sicher, mit einer Ellipse und den Makros aus cstdarg. Aber in C++ macht man das normalerweise nicht mehr wegen der Typensicherheit.
-
Du kannst eine Funktion in C++ so einstellen, dass sie eine Variable Parameteranzahl hat; Das geht afaik so:
void TestFunktion(int Param1, int Param2, ...) { };
Innerhalb der Funktion musst du dann anhand anderer Funktionen dynamisch die übergebenen Parameter auslesen. Google mal danach oder benutz die Forensuche, wie genau das geht weiß ich jetzt so auch nicht...
-
Stichwort:
va_list
-
vond er ellipse ist dringends abzuraten, da sie nur für pod typen funktioniert, ansonsten ist das ergebnis undefiniert!
-
Hallo, Ellipse kenn ich nicht. va_list scheint einfach zu sein. Vielen Dank für die Antworten.
-
va_list ist bestandteil des mechanismus um auf parameter, die ellipsen übergeben wurden, zuzugreifen - wie bereits erwähnt sind ellipsen nicht sicher und ohnehin nur mit PODs nutzbar (allerdings wird der compiler dich nicht warnen, wenn du etwas anderes übergibst).
-
imson schrieb:
Hallo, Ellipse kenn ich nicht. va_list scheint einfach zu sein. Vielen Dank für die Antworten.
Ellipse nennen sich die drei Punkte in der Parameterliste; sie sind Voraussetzung für die Verwendung der va_...-Makros.
Moritz