C++ Parameter in Void Funktion übergeben

Aixx

Ensign
Registriert
Sep. 2011
Beiträge
239
Nabend,

ich habe eine Frage bezüglich der Übergabe von Parametern in eine Void Funktion.
Bin gerade dabei mir dies selber bisl beizubringen aber habe nun ein Problem.
Ich teste gerade nur erstmal wie die Funktion aufgerufen wird usw.

Ich versuche bei der Funktion

void Test(int x,int y) // Deklaration

Parameter zu übergeben .. Dies hat auch Funktioniert mit

if (Eingabe ==1 ) Test(Eingabe,Eingabe2);

Nun übergibt er ja "Eingabe" aus der main in die Variable "x" in der Void Funktion. Und Eingabe 2 dann in die y Variable ..

Nun kommt das Problem .. MUSS ICH bei der Deklaration von int x, int y nun IMMER bei der Übergabe 2 Variablen übergeben, sodass x und y gefüllt werden, oder funktioniert es auch, indem ich nur x "fülle" ?

Weil bei z.b. if (Eingabe ==2 ) Test(Eingabe); wo er nur x füllen soll kommt dann eine Fehlermeldung die da lautet :

too few arguments to function `void Test(int, int)

Kann ich auch bei der Übergabe festlegen welche Variable er in der Void funktion benutzen soll ?
Wieso muss ich denn nun immer 2 Variablen übergeben ?

vielen Dank im Voraus

Mfg
 
Such mal nach Standardparameter.
Code:
void Test( int x, int y = 5 ); // nur in der Deklaration
 
Nein, du musst zwingend beide Variablen übergeben...schließlich macht deine Methode ja etwas mit den Variabeln...eine nicht definierte Variable führt schlichweg zu einer Fehlermeldung...

Wenn du die Methode mit einer Variable brauchst musst du sie wohl oder übel einzelnd definierten (soweit mir geläufig)...
 
Also wenn du zwei methoden definierst, zB

void Test(int x, int y)
und void Test(int x)

und wenn du jetzt eine Variable übergibst, so wird automatisch die letztere Methode ausgeführt, übergibst du zwei Variablen, so wird die erste Methode ausgeführt. (das hat einen Namen, kA wie das jetzt heißt...)
 
Okay aber dann weiss ich schoma wie das ganze Prinzip damit abläuft mit ausführen,deklarieren usw.

Kann ich denn in der Void Funktion eine Variable "leeren" wenn ich eine bestimmte Eingabe getätigt habe ? Das er die zwar erst übernimmt aber bei Eingabe2 z.b. dann die nicht benötigte Variable wieder löscht

edit : Ah danke Misa .. Wusste nicht das es 2 Funktionen geben darf mit dem gleichen Namen. Danke euch
 
Zuletzt bearbeitet:
Nein, wenn beide Parameter in der Liste stehen, musst du auch beide angeben bzw. werden immer beide übernommen. Wenn du nur einen angeben willst, setz den zweiten auf den Wert, von dem du ausgehst (als Teiler bei einer Division bspw. zwei oder so).
 
Nach dem Prinzip der Überladung (von C++ unterstützt) kanns du unter dem gleichen Methodennamen verschiedene Parameter übergeben.

du könntest zB (falls es das ist was du willst)
void function1(int y, int x) {
do something }

void function1(int x) {
function1(0, x)
}

So würde er dann wenn du nur eine Zahl eingibst trotzdem das gleiche machen wie in der mit 2 parameter, würde aber einfach eine 0 dazumachen. (auf die 0 könntest du ja dann auch irgendwie reagieren oder so)
 
Methodenueberladung heisst das Ganze, damit du mehrere fast gleiche Methoden hast, die doch leicht verschiedene Sachen machen, oder irre ich mich?
 
Als Überladung bezeichne ich eher etwas wie
Code:
void a( int a );
void a( char *a );
Wenn die Funktion das gleiche macht, würde ich immer zu Standardparametern greifen, einfach weil sie das Gleiche, mit den selben Variablen machen.
 
Zuletzt bearbeitet: (int a durch void a ersetzt)
Weil es grad so gut passt:
http://wiki.infostudium.de/wiki/Überladung_(Java)

Unten rechts das Bild ;)

Das mit dem Überladen stimmt schon, geht bei Java auch mit dem Konstruktor.
Genau das hat der TE doch eigentlich gebraucht, eine Methode die einem oder 2 Parametern genutzt werden kann.
 
Zuletzt bearbeitet:
Es nennt sich Überladen von Methoden, wenn der selbe Methodenname mit unterschiedlicher Signatur belegt wurde.
 
Zurück
Oben