Funktion mit mehreren Argumenten
-
Hallo,
Ich habe mal eine Frage, kann man eine Funktion auch so programmieren dass sie anstatt 2 Argumenten, optional 3 Argumenten als Input nehmen kann, wenn dies möglich ist, wie programmiert man so eine Funktion?
Vielen Dank im Voraus.
-
Überladung.
-
Standardparameter kannst du durch den Prototypen festlegen:
void myFunc(int i,char c,bool b=true); //b hat den Standardwert true und muss beim Aufruf nicht gesetzt werden (kann aber natürlich)Eine variable Anzahl von Parametern kriegst du mit der Ellipse ("...") hin:
http://msdn.microsoft.com/en-us/library/aa243019(VS.60).aspx
-
ClaudeG schrieb:
Ich habe mal eine Frage, kann man eine Funktion auch so programmieren dass sie anstatt 2 Argumenten, optional 3 Argumenten als Input nehmen kann, wenn dies möglich ist, wie programmiert man so eine Funktion?
Mehrere Möglichkeiten:
// 1. Überladung void foo(int i) {/*...*/} void foo(int i, int j) {/*...*/} int main() { foo(1); // ruft void foo(int) auf foo(1, 2); // ruft void foo(int, int) auf } // 2. Defaultparameter void foo(int i, int j=0) {/*...*/} int main() { foo(1); // ruft void foo(int, int) auf [mit 0 als Vorbelegung für j] foo(1, 2); // ruft void foo(int, int) auf } // 3. Listen/Vectorübergabe void foo(std::vector<int> const & values) {/*...*/} int main() { std::vector<int> values; values.push_back(1); values.push_back(4); values.push_back(7); foo(values); }
-
_matze schrieb:
Eine variable Anzahl von Parametern kriegst du mit der Ellipse ("...") hin:
http://msdn.microsoft.com/en-us/library/aa243019(VS.60).aspx
Die sehr unsicher ist, sofern möglich würde ich dann eher zu einer vector-Übergabe u.ä. greifen.
-
/*7*/ foo(1); // ruft void foo(int, int) aufDas wäre mir neu.

-
drakon schrieb:
Das wäre mir neu.

Flüchtigkeitsfehler... Muss noch im Halbschlaf gewesen sein (Habe es auch korrigiert).