[gelöst]Vererbungsproblem
-
Hi!
Ich weiß nicht ob der Titel passend ist aber mir fällt irgendwie nichts passenderes ein.
Ich habe folgendes "Problem":
Ich habe einen Basisklasse A, von dieser erben die Klassen B und C. soweit kein Problem.
In der Klasse A brauche ich nun einen Zeiger der auf ein Objekt der Klasse B zeigt. Und da fangen die Probleme an. Ich habe jeweils ein Header- und Sourcefile für eine Klasse. Im Header der Klasse A wird der Header der Klasse B inkludiert und umgekehrt. In der Definition der Klasse A bekomme ich nun aber den Fehler dass der Typ B nicht erkannt wird. In den Headerfiles sind die üblichen Include Guards und die sind denke ich auch das Problem.
Wenn ich es in einem Header definiere funktioniert es:
class B; class A { /*...*/ private: B* parent; } Class C : public A { /*...*/ } Class B : public A { /*...*/ }So funktioniert es prinzipiell, ich hätte aber lieber jede Klasse in einem eigenen Header. Hat jemand dazu eine Idee?
Beste Grüße
Andreas
-
Wo ist das Problem?
// A.hpp class B; class A { B* parent; }// A.cpp #include <B.hpp> ...PS: Was sind das denn für Klassen? Es ist doch recht ungewöhnlich, dass A hier von B weiß.
-
das habe ich eigentlich probiert, hat aber irgendwie nicht funktioniert... ich probiere es gleich noch mal

-
ich kann jetzt nicht mehr genau sagen ob ich es bei den zig Versuchen vorher gleich hatte, aber es funktioniert jetzt. Danke!
Es soll grob gesagt die Struktur eines Dateisystems abgebildet werden. Die Basisklasse (FilesystemObject) enthält dabei alles was auf eine File und ein Directory zutrifft, darunter auch, dass sowohl ein Directory als auch File einen Zeiger auf das parent Object haben, was aber nur ein Directory sein kann.
-
Dann schau dir mal das Composite-Pattern an.
-
Das implementiere ich auch. In der Directory Klasse gibt es einen Container der Objekte vom Typ FilesystemObject enthält, jedoch hätte ich gerne eine Möglichkeit das parent Objekt zu ermitteln ohne dass ich den ganzen Baum durchgehen muss.
-
Sorry, da hab ich nicht genau genug hingesehen.
-
Weil es in dem Codestück auch nicht steht ;), aber ich überdenke das mit dem Zeiger auf Parent noch mal, bin mir selbst nicht mehr sicher ob das so eine gute Idee ist

-
Tja eine bessere Lösung fällt mir da auf Anhieb auch nicht ein. Die Frage ist halt, ob die Elemente ihre Eltern wirklich kennen müssen.