wieso kommt hier ein Fehler



  • Ok, ich hab ein prog geschrieben, indem die main.cpp einen header hat, welcher auf eine Funktion weist( welche in einer anderen cpp ist) und in dem 2 Klassen definiert sind.

    Ich greife mit der main funktion auf die strukturen zu, aber auch mit der Funktion aus der anderen cpp.

    Nun kommt bei mir der Fehler, ich würde versuchen die gleiche Variable 2 mal zu definieren. das kann ich doch, da es die selbe Variable sein soll. Wo ist der Fehler

    main.cpp:

    #include "head.h"
    
    int main ....
    x.a=30;
    

    xtra.cpp

    #include "head.h"
    
    void funk ...
    x.a=12;
    

    head.h
    [cpp]
    void funk //Prototyp

    struct {
    int a;
    }x;
    [cpp]



  • Du musst die Variable in einer .cpp-Datei definieren und nicht in einem Header.



  • nero-ex schrieb:

    Ok, ich hab ein prog geschrieben, indem die main.cpp einen header hat, welcher auf eine Funktion weist( welche in einer anderen cpp ist) und in dem 2 Klassen definiert sind.

    Ich greife mit der main funktion auf die strukturen zu, aber auch mit der Funktion aus der anderen cpp.

    Nun kommt bei mir der Fehler, ich würde versuchen die gleiche Variable 2 mal zu definieren. das kann ich doch, da es die selbe Variable sein soll. Wo ist der Fehler

    du musst eine instanz von x erstellen

    main.cpp:

    #include "head.h"
    
    //hier erstellen wir die instanz
    x EinXObjekt;
    
    int main ()
    {
      EinXObjekt.a=30;
      return 0;
    }
    

    xtra.cpp

    #include "head.h"
    
    void funk()
    {
      EinXObjekt.a=12;
    }
    

    head.h

    void funk();     //Prototyp
    
    struct {
    int a;
    }x;
    
    //hier machen wir die instanz überall bekannt
    extern x EinXObjekt;
    


  • Was denkst du, was das ist:

    struct {
    int a;
    }x;
    

    🙄



  • Wenn ich die structur aber in eine cpp schreibe, wie krieg ich dann die ganze structur bekannt. extern struct???



  • Du musst der Struktur einen Namen geben:

    struct X { } x;
    
    //...
    extern X x;
    


  • Muss ich die andere cpp datei eigentlich irgendwie in der ersten deklarieren (sowie bei der header)??



  • Nein



  • nero-ex schrieb:

    Muss ich die andere cpp datei eigentlich irgendwie in der ersten deklarieren (sowie bei der header)??

    Nein.


Anmelden zum Antworten