Dynamische Allokation gegenseitig verlinkter Klassen
-
Hey
ich hab ein Problem mit folgendem Code:#include "B" class A { private: B *b; public: A(){b=new B(this)} }; ////// #include "A" class B { private: A *a; public: B(A *a){this->a=a;} };
Hier würden sich ja beide Datein unendlich oft gegenseitig includieren, klar dass das nicht funktioniert. Ziel ist, dass Klasse A die Klasse B dynamisch erstellt und B somit auch "kennt", nur das B auch A kennen soll, um Methoden von A aufrufen zu können. Hat da jemand ne Idee für ne schöne Lösung, undynamisch ginge es ja, wenn man in der Main-Funktion beide Klassen erstellt und ihnen dann jeweils nen Zeiger aufs andere Objekt übergibt. ABer da gibts doch bestimmt ne bessere Lösung, oder?
-
class B; class A { private: B *b; public: A(); }; class B { private: A *a; public: B(A *a){this->a=a;} }; A::A() { b = new B; }
Feel free to divide this into three or more files.
Für Dein eigentliches Problem gibt es womöglich eine bessere Lösung.
-
Klappt leider nicht.
Folgende Fehler werden produziert:
"forward decleration of 'struct B' "-im Header der Klasse A
"invalid use of incomplete type 'struct B ' "-im Konstruktur von A
-
// A.h class B; class A { private: B *b; // ok B ist irgendwas, egal zeiger ist zeiger. public: A(); }; // B.h class A; class B { private: A *a; // ok A ist irgendwas, egal zeiger ist zeiger. public: B(A *a); }; // A.cpp #include "B.h" A::A() { b = new B; // ok, was ein B ist weiß ich jetzt aus B.h }
-
Ahh ok (: . Jetzt läufts auch, danke sehr