Klasse A und B - Konfliktprobleme
-
Klasse A und B werden deklariert
In Klasse A wird Klasse B erzeugt. A inkludiert Klasse B
Klasse B will Zugriff auf die Methoden von A.
Klasse B müsste also A kennen.1. Idee: Zeiger auf A indem B erzeugt wurde
Versuch: in Klasse B wird A inkludiert. Geht aber nicht, weil A bereits B inkludiert hat.
2. Idee: Klasse B wird von A geerbt. - Geht aber nicht, weil Inkludierung nicht geht. Öh, bestimmt Rekursivproblem?Was tun?
-
eine forward-deklaration:
//A.hpp class B; class A { B b;//geht nicht B& b;//geht B* b;//geht foo(B b);//geht nicht foo(B& b);//geht foo(B* b);//geht }; #include "B.hpp"//nicht vergessen, am ENDE dann doch noch zu inkludieren
//B.hpp #include "A.hpp" class B { A b;//geht A& b;//geht A* b;//geht foo(A b);//geht foo(A& b);//geht foo(A* b);//geht };
normalerweise kannst du ohne schmerzen darauf verzichten, daß die eine klasse wirklich alle details der anderen schon im header kennt und dich auf zeiger und referenzen in der schnittstelle beaschränken. in den *.cpp-dateien kannste dann frei alles inkludieren und ganz normal weitermachen.
-
Heftig. Das funktioniert wirklich. Obwohl meine beiden Klassen schon geerbte Klassen sind. Und neue Argumente in Konstruktor über Elementinitialisierer der nicht geerbt ist.
Wusste nicht, dass das alles geht.
Danke!