000
17.11.2005, 12:35 Uhr
~maxpower24
Gast
|
Kurzform der Frage: Wie kriegt man es hin, dass sich 2 Klassen gegenseitig kennen?? Ich hab hier Probleme mit den include-Dateien.
Hallo,
ich habe noch nicht sehr viel Erfahrung mit C++ (aber mit OO-Programmierung) und hab daher eine Frage zu folgendem Problem:
Ich habe eine Klasse A (Dateien A.h und A.cpp) und eine Klasse B (Dateien B.h und B.cpp). Die Klasse A soll eine Membervariable vom Typ der Klasse B haben und die Klasse B soll wiederum eine Membervariable vom Typ der Klasse A haben - somit haben wir eine bidirektionale Hat-Beziehung.
Bei der Implementierung dessen, ist es ja nun erforderlich, dass die Datei A.h die Datei B.h inkludiert (damit sie den Typ B kennt). Gleichsam ist es auch erforderlich, dass die Datei B.h die A.h inkludiert, damit sie den Typ A kennt. Die *.cpp-Dateien inkludieren dann nur noch die für sie relevante *.h-Datei.
Hier spielt irgendwie mein Linker verrückt - offensichtlich handelt es sich um ein Problem der Sorte "die katze beißt sich in den Schwanz"...Ich hab dann mal versucht, die *.h-Dateien mit den folgenden Prä-Prozessor-Direktiven zu versehen:
#ifndef _A_ //...für Klasse A #define _A_ ......//includes und Klassendeklaration
#endif
Der effekt war, dass nun beim Compilieren, die Typen nicht mehr erkannt wurden, weil offensichtlich, die *h-Dateien nur 1mal im Projekt inkludiert wurden (Tatsächlich gibt es ja aber im Projekt 2 #include "A.h" - Anweisungen, nämlich einmal in A.cpp und einmal in B.h).
Kurzum: ****** Wie kann ich dieses Problem lösen?? Wie sind solche bidirektionalen Objektreferenzen in C++ realisierbar???
Danke für jeden Hinweis. |