Gegenseitige Abhängigkeit zweier Klassen



  • Hallo!
    ------

    Angenommen ich will eine Gegenseitige Abhängigkeit von 2 Klassen cChild und cParent bilden, sodass jeweils von der einen auf die andere Zugegriffen werden kann, wie es in WinMain versucht wird.

    Allerdings meldet der Compiler einen Fehler - er erkennt in cChild.h den Typ cParent nicht - obwohl die Datei "cParent.h" #included wurde!
    Wenn ich dagegen nur eine einseitige Abhängigkeit schaffe, d.h alle mit //* gekennzeichneten Zeilen auskommentiere, geht alles glatt.

    Worin liegt der Fehler? Kann mir dabei jemand helfen? Vielen Dank für eure Bemühungen!

    Main.cpp:

    #include <windows.h>
    #include "cParent.h"
    
    INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT) {
    	cParent p;
    
    	p.Child.f();
    	p.Child.Parent.f(); //*
    
    	return 0;
    }
    

    cParent.h:

    #ifndef cParent_h
    #define cParent_h
    
    #include "cChild.h"
    
    class cParent {
    public:
    	cParent() {};
    	~cParent() {};
    
    	cChild Child;
    
    	void f() {};
    
    };
    
    #endif // cParent_h
    

    cChild.h:

    #ifndef cChild_h
    #define cChild_h
    
    #include "cParent.h" //*
    
    class cChild  {
    public:
    	cChild() {};
    	~cChild() {};
    
    	cParent Parent; //*
    
    	void f() {};
    
    };
    
    #endif // cChild_h
    

    Anmerkung: Die (leere) Implementation der Funktionen, also {} hinter den Deklarationen, ist hier nur aus Platzgründen so gemacht. Normalerweise gehören sie natürlich in eine eigene Datei, das hat aber mit dem Problem nichts zu tun...

    pw



  • hallo

    du musst mit zeigern arbeiten, im konstruktor mit new ein objekt allozieren.
    und dann arbeite mit einer vorwärtsdeklaration..

    schreib

    class cChild ;

    und entsprechend ... statt include vor die klassen. damit machst du sie bekannt.



  • Okeh..
    Vielen Dank!

    pw


Anmelden zum Antworten