Bekomme unlogischen Fehler beim Compilieren für Methodenimplementierung



  • Hallo,

    ich hab folgenden Code:

    main.cpp

    #include "gui.h"
    
    int main() {
    
        GUI hotel;
        hotel.app();
    }
    

    gui.h

    class GUI
    {
        public:
        void app();
    
    };
    

    gui.cpp

    #include <iostream>
    using namespace std;
    
    #include "gui.h"
    
    void GUI::app() {
    
        int imenu;
    
        cout << "****************Willkommen bei Hotel XY****************" << endl;
    
        //Menu
    
        do {
    
        cout << "               Bitte wählen sie aus." << endl;
        cout << "               1. freie Zimmer anzeigen" << endl;
        cout << "               2. Zimmer buchen" << endl;
        cout << "               3. Zimmer stornieren" << endl;
        cout << "               4. Programm beenden" << endl;
        cin >> imenu;
    
        }while(imenu!=5);
    }
    

    Der Compiler gibt folgende Fehlermeldung zurück, die keinen Sinn für mich ergibt.

    /home/xxx/Projekt/main.o||In function `main':|
    main.cpp|| undefined reference to `GUI::app()'|
    

    Habe schon mit meinem Dozenten drüber geguckt, aber irgendwie seh ich da keinen Fehler. Hab ich irgendwas übersehen? Woran kann es liegen? Wenn ich die Implementierung der Methode direkt in die gui.h reinpacke, compiliert er mir das Ganze ohne Murren.

    Programmiere unter folgender Umgebung:

    Ubuntu 11.10 (Linux)
    gcc 4.6.1
    Code::Blocks 10.05

    Falls noch Informationen gebraucht werden einfach anfordern.


  • Mod

    Du musst den Code beider Dateien zusammen linken. Wenn dein Dozent das nicht weiß: Ojeh. 😮



  • SeppJ schrieb:

    Du musst den Code beider Dateien zusammen linken. Wenn dein Dozent das nicht weiß: Ojeh. 😮

    Wie genau muss das aussehen? Steh da grad auf dem Schlauch.

    Normalerweise ist der Dozent sehr kompetent. Vielleicht hat er in dem Moment nur nicht richtig drüber geschaut.


  • Mod

    Beim Compileraufruf musste entweder beide Dateien angeben:

    g++ main.cpp gui.cpp weitere_optionen
    

    Oder du machst es Schrittweise (dies lässt sich auch wunderbar automatisieren):

    g++ main.cpp -o main.o weitere_compiler_optionen
    g++ gui.cpp -o gui.o weitere_compiler_optionen
    g++ main.o gui.o weitere_linker_optionen
    

    Deine IDE macht diese Schritte auch sicherlich irgendwie automatisch, du musst es ihr bloß beibringen. Vermutlich indem du die Dateien zu einem einzelnen Projekt zusammen fasst oder ähnliches.



  • Ok danke jetzt hat es funktioniert.


Anmelden zum Antworten