Standardargumente
-
Habe gerade in meinem C++ Buch gelernt, dass es ne Möglichkeit gibt Standardargumente in C++ festzulegen.
Für Funktionen.
Somit werden diese falls der Benutzer sie nicht beim Funktionsaufruf übergibt standardmäßig den Werten zugewiesen.
Folgendes Beispiel funktioniert nach Buch.
Doch leider nicht nach meinem Compiler:#include<iostream> using namespace std; void hallo(int,int,int); int main() { hallo(); //Sollte eigentlich nicht nötig sein Argumente zu übergeben, da die Funktion über Standardargumente verfügt. getchar(); return(0); } void hallo(int a=3,int b=4,int c=3) { cout << a << b << c << endl; }Wiedersehn
David
Errors:
3 C:\Dokumente und Einstellungen\Praktikant\Eigene Dateien\test.cpp too few arguments to function `void hallo(int, int, int)'
7 C:\Dokumente und Einstellungen\Praktikant\Eigene Dateien\test.cpp at this point in file
~PS: Für die PS3 ist immer noch kein Geld da. Daher muss ich leider weiter proggen^^~
-
Die Reihenfolge ist falsch: Wenn es eine Deklaration gibt, die nicht Definition ist, müssen die Standardargumente dort angegeben werden, und bei der Definition nicht.
#include<iostream> using namespace std; void hallo(int a=3, int b=4, int c=3); int main() { hallo(); //Sollte eigentlich nicht nötig sein Argumente zu übergeben, da die Funktion über Standardargumente verfügt. getchar(); return(0); } void hallo(int a, int b, int c) { cout << a << b << c << endl; }PS: Gewöhn Dir an, die Parameternamen auch bei Deklarationen auszuschreiben, das gehört zur Dokumentation von Schnittstellen. Sofern die Bezeichner aussagekräftig sind, natürlich.

-
Der Compiler arbeitet von oben nach unten - und beim Aufruf kennt er nur den Prototyp der Funktion (der hat aber keine Default-Parameter). Damit das Beispiel funktionieren kann, mußt du die Default's an der richtigen Stelle angeben:
#include<iostream> using namespace std; void hallo(int=3,int=4,int=3);//hier gehören die Defaultwerte hin int main() { hallo(); getchar(); return(0); } void hallo(int a,int b,int c)//hier nicht { cout << a << b << c << endl; }
-
Zum Zeitpunkt von Main ist nur hallo(int, int, int) bekannt. Daher werden 3 Variablen erwartet.
Die Methode hallo(int = ...) folgt erst nach main
-
777 schrieb:
Habe gerade in meinem C++ Buch gelernt, dass es ne Möglichkeit gibt Standardargumente in C++ festzulegen.
Ich hatte sowas auch, nun übersetzte ich mein Code als C und es ging nicht. Guck mal bitte, welche Optionen du deinem Compiler übergeben kannst.
-
LordJaxom hatte Recht.
Ich hatte es genau vertauscht
Noch ne Frage:
Nehmen wir an ich möchte das zweite Objekt festlegen, das erste jedoch Standartmäßig festlegen- wie geht das.
Folgender Code ergibt einen Fehler:
hallo(,,7);cya
David
-
Das geht in C++ gar nicht - du darfst nur die hintersten Argumente weglassen (und durch Defaultwerte auffüllen).
-
Du musst Standardargumente AFAIK immer zum Schluß der Argumentenliste setzen.
-
Danke
Irgendwo klingt das auch logisch