extern int



  • Hallo,

    ich habe eine als extern int deklarierten Variable in einem header File auf
    die nun mehrere cpp Files zugreifen sollen.
    Die Programme lassen sich auch kompilieren aber beim linken wird die Variable
    dann nicht gefunden.
    Mein Programmcode siegt wie folgt aus:

    class1.h

    class eins {
    
    private:
             int mySelect;
    
    }
    

    class1.cpp

    void class1::read() {
            mySelect=read(socket,buffer,BUF_SIZE);
    }
    

    class2.cpp

    extern int mySelect;
    
    void class2::print () {
            cout<<mySelect<<endl;
    }
    

    Habe extern als Verweis auf eine globale Variable verstanden die ich einmal definieren muss.

    Kompilieren funktioniert beim linken kommt dann aber folgende Fehlermeldung:

    "undefined reference to mySelect"

    Hintergrund des Ganzen ist, daß auf mySelect Daten ankommen die dann in der Funktion class2::print weiterverarbeitet werden sollen.

    Vielen Dank im Voraus
    Marc



  • marcstud schrieb:

    ich habe eine als extern int deklarierten Variable in einem header File auf
    die nun mehrere cpp Files zugreifen sollen.

    Nein, hast du nicht. Du hast eine Membervariable in Klasse class1 in der Headerdatei. Und du hast eine extern deklarierte globale Variable mit demselben Namen in class2.cpp. Diese beiden haben nichts miteinander zu tun. Die globale Variable ist außerdem nirgends definiert, daher beschwert sich der Linker.

    Hintergrund des Ganzen ist, daß auf mySelect Daten ankommen die dann in der Funktion class2::print weiterverarbeitet werden sollen.

    Dann sollte class2 irgendwie auf das class1-Objekt zugreifen können, das zum Einlesen benutzt wurde. Über eine globale Variable geht das nur, wenn class1 auch in diese globale Variable einliest.

    Kann es sein, dass du noch Probleme mit dem Unterschied zwischen Klasse und Objekt hast.


Anmelden zum Antworten