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