Howto? Klasse A kennt Klasse B - Klasse B kennt Klasse A
-
Bin ein newbie aber kenne ein paar termini! Ich benutze g++ unter linux. Ich hoffe dieser Thread ist an richtiger Stelle.
Wie können in C++ zwei Klassen einander kennen? Oder anders ausgerdrückt: Wie ist folgender Code zum laufen zu bringen:
class A { B *b; }; class B { A *a; };
(Ich habe die Klassen in seperaten Dateien mit jeweiliger Header-Datei)
Wenn ich die Klasse B erst deklariere und nach Gebrauch definiere bzw. für Prototypen die entsprechenden Methoden mit Methoden-Rumpf include, gibt es Mecker, weil vermutlich die Deklaration der Klasse tatsächlich eine Definition darstellt und danach keine Redifiniton möglich scheint.Wenn ich das ganze mit '#>g++ -c ...' bearbeite und ich die Objekt-Dateien A.o und B.o erhalte, scheitert es hiernach mittels '#>ld A.o B.o' beiden Objekt-Dateien eine ausführbare Datei zu linken.
Wo bzw. anhand welcher Stichworte finde ich entsprechende Informationen?
-
Stichwort: Vorwärtsdeklaration bzw. forward declaration
class B; // <-- dies hier ist eine Vorwärtsdeklaration class A { B *b; }; class B { A *a; };
d.h. es wird nur der Name bekanntgegeben und die Definition ist irgendwo anders
(besonders bei Aufteilung auf mehrere Header ist das nötig!)