Anfängerfrage: Klassenüberschneidungen
-
Hallo.
Ich bin recht neu in C++ und bin nun auf ein Problem gestoßen, welches sicherlich eine ganz einfache Lösung hat - nur weiß ich sie nicht. Da ich den Fachbegriff dafür nicht kenne, fällt es schwierig mit der Suchfunktion in einem C++ Forum nach den Begriffen "Klasse" und "Zeiger" zu suchen.
Also, mal stark vereinfacht:
Ich habe die beiden Klassen
class A_Objekt { B_Objekt B; }; class B_Objekt { A_Objekt* p_A; };
Ich möchte also ein Objekt der Klasse A_Objekt haben, welches ein Objekt der Klasse B_Objekt enthält. Dieses B_Objekt soll seinerseits wieder einen Zeiger auf die "Mutterklasse" speichern.
Jetzt meckert aber mein Compiler (VC++.net) aber rum, dass er A_Objekt nicht lesen kann, da B_Objekt noch nicht deklariert ist und wenn ich die Reihenfolge tausche, dass er B_Objekt nicht lesen kann, weil A_Objekt noch nicht deklariert ist.
Wie kann ich das umgehen?
-
Hallo,
was du suchst heisst Vorwärtsdeklaration.Ich würde die Klassen in umgekehrter Reihenfolge definieren und dann ganz obe vorwärts deklarieren.
class A_Object; // vorwärtsdeklaration class B_Objekt { A_Objekt* p_A; }; class A_Objekt { B_Objekt B; };
[edit] hehe japp zu langsam
[/edit]
-
Setze davor:
class B_Object;
das ist eine Vorwärtsdeklaration, somit weiß der Compiler, dass die Klasse B_Object noch definiert wird
edit: diesmal zu langsam
-
Habt Dank.