Anfängerfrage zu Klassendeklarationen



  • Hi,

    2 verschiedene Klassen, jede enthält als Member einen Pointer auf die
    andere Klasse. Wie deklariert man sowas, weil folgendes Mini-Prog kann nicht
    mit g++ compiliert werden wegen
    "ISO C++ forbids declaration of ‘B’ with no type".

    using namespace std;
    
    class A {
        B * p;
    };
    
    class B {
        A * p;
    };
    
    int main(void) {}
    


  • class A
    {
      class B* p;
    };
    
    class B
    {
      A* p;
    };
    
    int main()
    {}
    

    bb

    edit: das nennt man "forward declaration"



  • das ging ja schnell, dankeschön 🙂



  • Du kannst die Klasse auch ausserhalb vorwärts-deklarieren:

    class B;
    
    class A
    {
        B* p;
    };
    

    Finde ich noch praktisch, da man gerade am Anfang des Headers die Abhängigkeiten verschiedener Klassen sieht. Ausserdem kann man sich so einige class -Schlüsselwörter sparen, wenn die Klasse in verschiedenen Scopes benötigt wird.


Anmelden zum Antworten