Referenz 2er Klassen aufeinander mit Functioncalls ( Visual C++ als IDE)
-
Hallo , ich brauche 2 Klassen die miteinander verbunden sind und die sich gegenseitig Funktionen aufrufen müssen.
Die eine Richtung ( mb -> ma ) ist kein Problem aber wenn ich aus der Class ma
die Klasse mb Triggern möchte bekomme ich immer den Fehler :Verwendung des undefinierten Typs "Typ"Eigentlich will ich nur eine Möglichkeit haben, das sich zwei Klassen kennen und gegenseitig aufrufen können.
Hier der Code:
//////////////////////////////////////////////////////////////////////////// // Forward Deklaration class mb; class ma { friend class mb; public: ma(); int ausgabe; int mein(void); int Callb(void); void SetParent(mb *aptrb); protected: mb *_ptrb; }; int ma::Callb() { int lreturn = 0; mb *lptr = _ptrb; //lreturn = lptr->richtig(); //lreturn = (*lptr).richtig(); <-- Fehler: Hier geht das nicht return lreturn; } void ma::SetParent(mb *aptrb) { _ptrb = aptrb; } ma::ma() { int a = 2; } int ma::mein() { return ausgabe; } //////////////////////////////////////////////////////////////////////////// class mb { public: mb(); ~mb(); void tuewas(void); int richtig(void); void SetParent(ma *aptra); protected: ma *ptra; }; int mb::richtig() { return 500; } void mb::SetParent(ma *aptra) { ptra = aptra; } mb::mb() { int a = 2; } mb::~mb() { int b = 2; } void mb::tuewas() { int a = 2; // A aufrufen ma *p = ptra; if ( p != 0 ) { a = p->mein(); a = a + 3; p->Callb(); } } ////////////////////////////////////////////////////////////////////////////
-
Hallo,
Wenn du aus der Klasse ma auf geschütztde oder private Elemente von mb zugreifen möchtest solltest du auch ma in mb als friend deklarieren...Caipi