Funktion in Funktion aufrufen ?



  • Hi,
    Also ich hab nen paar FUnktionen geschrieben, die wiederrum Funktionen aufrufen, aber irgendwie funktioniert das ganze nicht 😞

    #include <iostream>
    using namespace std;
    int main()  //Hauptfunktion, in der der Programmcode steht
    {
        ausgabe();  //Die Funktion ausgabe() wird aufgerufen
        return 0;
    };
    void ausgabe() // Die Funtion ausgabe() wird definiert/geschrieben
    {
        cout << "Hallo, ich bin die ausgabe-Funktion\n";
        ausgabe_2();    //In der Funktion ausgabe() wird wiederrum die
    };                  // die Funktion ausgabe_2() aufgerufen
    void ausgabe_2() // Defininion der Funktion ausgabe_3()
    {
        cout << "Ich bin die Funktion ausgabe_2() in der\n"
            << " Funktion ausgabe()\n";
        ausgabe_3();    //die funktion ausgabe_3() wird aufgerufen
    };
    void ausgabe_3() // die Funktion ausgabe_3 wird definiert
    {
        cout << "Ich bin ausgabe_3() in der ausgabe_2()-Funktion\n"
            << ", welche wiederrum in der Funktion ausgabe() steht\n";
    };
    

    *Kompilierung läuft...
    Kapitel_1.cpp
    C:\Dokumente und Einstellungen\falkline\Desktop\works\c++\Kapitel_1.cpp(5) : error C2065: 'ausgabe' : nichtdeklarierter Bezeichner
    C:\Dokumente und Einstellungen\falkline\Desktop\works\c++\Kapitel_1.cpp(9) : error C2373: 'ausgabe' : Neudefinition; unterschiedliche Modifizierer
    C:\Dokumente und Einstellungen\falkline\Desktop\works\c++\Kapitel_1.cpp(11) : error C2065: 'ausgabe_2' : nichtdeklarierter Bezeichner
    C:\Dokumente und Einstellungen\falkline\Desktop\works\c++\Kapitel_1.cpp(14) : error C2373: 'ausgabe_2' : Neudefinition; unterschiedliche Modifizierer
    C:\Dokumente und Einstellungen\falkline\Desktop\works\c++\Kapitel_1.cpp(17) : error C2065: 'ausgabe_3' : nichtdeklarierter Bezeichner
    C:\Dokumente und Einstellungen\falkline\Desktop\works\c++\Kapitel_1.cpp(20) : error C2373: 'ausgabe_3' : Neudefinition; unterschiedliche Modifizierer
    Fehler beim Ausführen von cl.exe.

    Kapitel_1.exe - 6 Fehler, 0 Warnung(en)
    *



  • Die Funktionen müssen vorher Deklariert sein.

    #include <iostream>
    using namespace std;
    
    void ausgabe_2();
    void ausgabe_2();
    void ausgabe_2();
    
    int main()  //Hauptfunktion, in der der Programmcode steht
    {
        ausgabe();  //Die Funktion ausgabe() wird aufgerufen
        return 0;
    };
    void ausgabe() // Die Funtion ausgabe() wird definiert/geschrieben
    {
        cout << "Hallo, ich bin die ausgabe-Funktion\n";
        ausgabe_2();    //In der Funktion ausgabe() wird wiederrum die
    };                  // die Funktion ausgabe_2() aufgerufen
    void ausgabe_2() // Defininion der Funktion ausgabe_3()
    {
        cout << "Ich bin die Funktion ausgabe_2() in der\n"
            << " Funktion ausgabe()\n";
        ausgabe_3();    //die funktion ausgabe_3() wird aufgerufen
    };
    void ausgabe_3() // die Funktion ausgabe_3 wird definiert
    {
        cout << "Ich bin ausgabe_3() in der ausgabe_2()-Funktion\n"
            << ", welche wiederrum in der Funktion ausgabe() steht\n";
    };
    


  • du rufst deine Funktion in main auf

    int main () {
       funktion ();
    }
    

    aber bis zu diesem zeitpunkt gibt es noch keine Funktionsdefinition.
    Du musst daher die Funktion vorher wenigstens deklarieren:

    int main () {
        void funktion(); //deklaration, kein Aufruf!
        funktion();
    }
    

    bzw.

    void funktion();
    int main () {
       funktion ();
    }
    

    Der Unterschied besteht im Sichtbarkeitsbereich



  • Original erstellt von Knuddlbaer:
    **Die Funktionen müssen vorher Deklariert sein.

    #include <iostream>
    using namespace std;
    
    void ausgabe_2();
    void ausgabe_2();
    void ausgabe_2();
    ```**
    

    sollte wohl heißen

    void ausgabe();
    void ausgabe_2();
    void ausgabe_3();
    

    😉



  • Du musst eine Funktion die Du aufrufen willst weiter vorne definieren/ deklarieren(und dann definieren). Und die Semikola nach Funktionskörpern solltest Du weglassen, die sind falsch. Das hindert aber niemanden daran, ausgabe_3 auch in einer anderen Funktion aufzurufen.



  • ooh, dummer Fehler, hätte ich sehen müssen 🙂
    thx


Anmelden zum Antworten