Mehrere Klassen in einer Datei: Forward Deklaration



  • Hi,

    mein Professor zwingt mich leider meine C++ Aufgaben in einer Datei abzugeben. Ich habe sowas noch nicht gemacht und daher Schwierigkeiten: Klasse A ruft in Methode foo die Methode boo von B auf (A hat eine Membervariable, die ein Pointer auf ein Objekt vom Typ B ist). B ruft in Methode hoo auf die Methode goo von A auf. Meine Datei sieht etwa so aus:

    class A;
    class B; // ERROR: forward declaration of »struct B«
    
    class A {
     ...
     void goo() {
      ...
     }
     void foo() {
      b->boo(); // ERROR: invalid use of undefined type »struct B«
     }
     B* b;
    };
    
    class B {
     ...
     void boo() {
      ...
     }
     void hoo() {
      a->goo();
     }
     A* a;
    };
    

    GCC gibt mir Fehler: "invalid use of undefined type" und "forward declaration".

    Was kann ich tun? Ist es überhaupt möglich das in einer Datei zu machen?
    Danke,
    Heiner



  • Nein, das geht so auf keinen Fall...

    Wenn die Deklarationen der Klassen in einer .h Datei und die Definitionen in einer .cpp Datei stehen dann gehts.

    EDIT: Urgs, ist natürlich quatsch, Du kannst Definition und Deklaration auch in einer Datei trennen...

    class A { 
      void foo();
    };
    
    void A::foo()
    {
      b->goo();
    }
    

    Musst dann eben zuerst nur die Klassen A und B deklarieren und dann die methoden ausschreiben...


Anmelden zum Antworten