Problem mit Klassen
-
Hi,
ich steh vor einem Problem, ich habe eine Klasse X und eine Klasse Y, Klasse X braucht aber etwas von Klasse Y und Klasse Y braucht etwas von Klasse X.
Nun hier mal bischen Psoidocode:
class X { public: void funktion_von_X (void); private: Y m_Y; }; class Y { public: void funktion_von_Y (void); private: X m_X; };
Wie macht man das?!?!?!?! also ich bekomm immer errors
-
geht garnicht
-
Scheisse
-
nur mit zeiger
private: Y* m_Y; private: X* m_X;
aber solch eine situation sollte garnicht vorkommen dürfen.
vielleicht kannst du es ja umdesignen?
-
du implementierst eine 'hat-ein' beziehung.
gib mal n beispiel aus der realen welt wo es das gibt, dass A ein B hat und B ein A hat -> das ist doch ne endlosschleife. (denn jedes B hat wieder ein A welches ja ein B hat und dieses hat ein A worin ein B zufinden welches ein A...)
-
Hi.
Vermutlich hat <DerCoder> ein anderes Problem:
die Klasse X kennt die Klasse Y noch nicht.schreib einfach drüber:
class X; class Y;
bja
-
nö, das hilft nichts. das geht einfach nicht was er da machen will.
-
recht du hast
-
-
class X.h: ------------------------------------------ class Y; class X { public: void funktion_von_X (void); void set_Y(Y * y); private: Y * m_Y; }; class Y.h: ---------------------------------- class Y { public: void funktion_von_Y (void); void set_X(X * x); private: X * m_X; }; class X.cpp: ------------------------------------ #include "y.h" void X::set_Y(Y * y) { m_Y = y; } class Y.cpp: ------------------------------------ #include "x.h" void Y::set_X(X * x) { m_X = x; } --------------------------------------------- int main(int argc, char* argv[]) { X x; Y y; x.set_Y(&y); y.set_X(&x); }
Über die Notwendigkeit kann man ohne hintergrund jedoch nichts sagen.
-
Ergänzung zu Shade's Post:
Du willst wahrscheinlich eine "wird verwendet" Beziehung. Das geht aber nur durch Zeiger. Bsp:
AUTO hat einen MOTOR, der MOTOR wird aber vom gleichen AUTO verwendet und nicht von einem neuen!