[C++] Übergang von Main in andere Funktion funktioniert nicht.

byte_head

Captain
Registriert
Jan. 2005
Beiträge
3.674
Hi,

ich habe gerade "erlernt" wie man von main in eine andere Funktion überleiten kann.
Leider funktioniert das noch nicht so gut. :/

Eigentlich wollte ich in Overtaker x und y noch inkrementieren aber soweit kommts ja garnicht...


Code:
#include <iostream> // iostream

using namespace std;

int Overtaker(int x, int y);

int main()
{
    int x = 5, y = 10;
    cout << " Willkommen zum Overtaker Testprogramm \n" << endl;
    cout << " Vor Overtaker ist x = " << x << " und y = " << y << endl;
    int Overtaker(int x, int y);
    return 0;
}

int Overtaker(int x, int y)
{
    cout << " \n x ist: " << x << endl;
    cout << " wait " << endl;
    return x,y;
}

Was mache ich falsch?
Die Konsole spuckt immer nur den Teil von main() aus. :(
 
"return x,y" geht so nicht. "Es kann nur einen geben", soll heißen, Du kannst nur eine Variable als Rückgabewert haben.

Außerdem inkrementierst Du nirgends.

Und es müsste heißen:

Code:
cout << " Vor Overtaker ist x = " << x << " und y = " << y << endl;
Overtaker(x, y);

also ohne "int" vor "Overtaker" und den Funktionsparametern.

Wie wärs mit diesem Buch: http://www.galileocomputing.de/openbook/c_von_a_bis_z/

Gruß
Morgoth
 
Zuletzt bearbeitet:
byte_head schrieb:
#include <iostream> // iostream
das mit dem kommentar mittels // macht man bei präprozessor direktiven nicht, da es nicht standardkonform ist.

int main()
{
[...]
int Overtaker(int x, int y);
lass da die "int" weg.

der rest wurde schon erklärt.
EDIT nachtrag: das mit dem int hat der morgoth hinterlistiger weise noch hinzugefügt. ;-)
 
Zuletzt bearbeitet:
Danke euch beiden, das inkrementieren (wie oben steht) wollte ich später noch einbauen. :)

Wenn ich jeweils x und y inkrementiere dann muss ich doch auch beide an main() zurückgeben oder?

Das Openbook ist zu C und nicht zu C++.

Danke :)
 
An die main-Funktion musst du nur was zurückgeben wenn Du die Variablenwerte die Du in den externen Funktionen berechnest auch in der main brauchst.
Wenn die Funktionen nichts zurückgeben müssen, dann kannst Du diese auch als void definieren, anstatt int. Aber das ist eigentlich nebensächlich.

//edit: Für die Grundlagen wie beispielsweise das Aufrufen von Funktionen oder die Übergabe von Variablen ist es egal ob ein Buch oder Tutorial für C oder für C++ geschrieben ist. Die absoluten Grundlagen unterscheiden sich nicht.
 
Zuletzt bearbeitet:
Ich habe jetzt nochmal bisschen rumprobiert, jetzt kriege ich einen Wert, aber 2 und nicht 50. :freak:

Code:
#include <iostream> // iostream

using namespace std;

int Overtaker(int x = 50 /*, int y*/ );

int main()
{
    int x /*= 5, y = 10*/;
    cout << " Willkommen zum Overtaker Testprogramm \n" << endl;
    //cout << " Vor Overtaker ist x = " << x << " und y = " << y << endl;
    
    Overtaker(x);  // Übergabe an die Overtake Funktion
    
    return 0;
}

int Overtaker(int x)
{
    cout << " \n x ist: " << x << endl;
    cout << " wait " << endl;
    cin.get();
    return 0;
}
 
Du definierst im Prototype der Funktion Overtaker x=50. Ändere das mal in
Code:
Overtaker(int x);
und weise in der main der Variable x den Wert 50 zu. Dann sollte es klappen.
 
@angleslayer nein er definiert da nichts. er gibt nur einem default-wert an. brauchen tut er ihn aber nicht.

@byte_head dein compiler sollte eingentlich rummeckern, dass du eine uninitialisierte variable verwendest. du hast x an keiner stelle einen wert zugewiesen.
 
Richtig. Ich habe mich wohl falsch ausgedrückt, sorry. Nichtsdestotrotz sollte x=50 in der main() dann zum richtigen Ergebnis führen.
 
Zurück
Oben