Ringinclude
-
Hallo,
ich hab ein Verständnisproblem.
Ich hab eine Klasse A. In dieser wird eine Klasse B erstellt.
Im Konstruktor von B möchte ich gern A mit "this" übergeben.
Jetzt hab ich das Problem, dass ich b.h in A includieren mus und a.h in b.h was der Compiler natürlich nicht mit macht.
Soweit ich es ergoogeln konnte kann ich in B die Klasse A "vorwärtsdeklarieren" und dann die header nur in der b.cpp einbinden.
Iwi verkompliziert sich das für mich alles. Wenn ich jetzt noch ne Klasse C dazu bekomme, dann müsste ich ja in der Klasse C die KLasse A nochmal "vorwärtsdeklarieren" ?
Vielen Dank für eure Hilfe
-
-> forward declaration
-
ja das mir klar, das es das gibt und das funktioniert, hab ich ja geschrieben.
gibts da keine coolere möglichkeit?
-
beginner2013 schrieb:
gibts da keine coolere möglichkeit?
Ein besseres Klassendesign, das vorher entsprechend gut durchdacht wurde.
-
beginner2013 schrieb:
Iwi verkompliziert sich das für mich alles. Wenn ich jetzt noch ne Klasse C dazu bekomme, dann müsste ich ja in der Klasse C die KLasse A nochmal "vorwärtsdeklarieren" ?
Ok. Damit könnte ich leben.
Die Gegenschritte wären grausamer, fürchte ich.
- B und C von einer gemeinsamen Basisklasse ableiten und nur die von A inkludieren.
- A zu einem Template machen und wer sich sein A anlegt, hat eh aus anderen Gründen schon B und C.
- Alles von Object ableiten und Object-Zeiger benutzen.
- Oder void-Zeiger.
- Zur Typwegmachung solche Nutzdaten in eine Datenbank stopfen.
-
fdgdfgdfg schrieb:
beginner2013 schrieb:
gibts da keine coolere möglichkeit?
Ein besseres Klassendesign, das vorher entsprechend gut durchdacht wurde.
z.b. beim Visitor-pattern brauche ich ja die forward declarations (zumindest habe ich damals (vor ca.3-4wochen) keine andere möglichkeit gefunden, diese ca. 150 nichtssagenden errors wegzubringen xD). das heißt es gibt einen besseren visitor-pattern (dieses pattern kommt mir sowieso suspekt vor fragt mich bitte nicht warum)?