Folgende Situation:
Man hat 2 zwei Klassen X und Y, beide klassen beherbergen Funktionen
die als parameter die jeweilige anderer Klasse benötigen bzw einen Klassenmember
des anderen types besitzen.
Wie löst man nun das Problem nun das der Kompiler dies wiederstandslos
annimmt?
Mit Guards, natürlich...zumindestens dachte ich das bis vorkurzem.
Hier mal exemplarisch 2 klassen um das Problem zu verdeutlichen!
würd man den code so dem gcc übergeben und versuchen beide klassen zu benutzen spuckt der jedoch Fehlermeldungen aus wie: Fehler:
* X wurde nicht deklariert.
Habe bisher keine wirkliche lösung dafür, hab es mit vorwärts deklaration versucht, hat aber auch nichts gebracht. Habt einer hier vielleicht die Lösung?
Ich glaube nämlich ich seh den Wald vor lauter Bäumen nicht.
Man hat 2 zwei Klassen X und Y, beide klassen beherbergen Funktionen
die als parameter die jeweilige anderer Klasse benötigen bzw einen Klassenmember
des anderen types besitzen.
Wie löst man nun das Problem nun das der Kompiler dies wiederstandslos
annimmt?
Mit Guards, natürlich...zumindestens dachte ich das bis vorkurzem.
Hier mal exemplarisch 2 klassen um das Problem zu verdeutlichen!
Code:
#ifndef X_H #define X_H #include "y.h" namespace abc { class x { public: //Funktion foo benötigt als Parameter ein object des typs y void foo(y* bla); }; } #endif
Code:
#ifndef Y_H #define Y_H #include "x.h" namespace abc { class Y { private: X m_Var; public: //Funktion supderfoo benötigt als Parameter ein object des typs x* void superfoo(x* bla); }; } #endif
* X wurde nicht deklariert.
Habe bisher keine wirkliche lösung dafür, hab es mit vorwärts deklaration versucht, hat aber auch nichts gebracht. Habt einer hier vielleicht die Lösung?
Ich glaube nämlich ich seh den Wald vor lauter Bäumen nicht.
Comment