header wirrwar
-
hi!
ich habe folgendes problem://header A
#ifndef A #define A #include "B.h" class cA; { int x; B *mB B *func { return mB->x; } } #endif;//header B
#ifndef B #define B #include "A.h" class cB; { int x; A *mA A *func { return mA->x; } } #endif;wie man sieht hilft forward deklination nicht viel da ich jeweils den noch undefinierten typ der anderen klasse verwenden möchte.
wie könnte ich das problem umgehen?
-
habe jetzte die definition der methode nicht inline, sondern in der cpp datei vorgenommen.
find ich zwar nich so dolle aber anders gehts wohl nicht
-
hm so nochmal, sollte mir vieleicht nen account besorgen

was passiert aber, wenn ich nun eine friend funktion der jeweils anderen klasse deklarieren möchte?
eine klasse wäre ja in jedem fall nicht definiert
-
1. Es gibt einen Grund warum Deklarationen in Header-Dateien, und Funktionsdefinitionen in Quellcode-Dateien angegeben werden.
2. Du hast die Klassen cA und cB genannt, verwendest aber die Symbole A und B.
3. Du hast in deinem Beispiel mehrere Syntaxfehler.
4. Die Klassendeklaration muss nicht bekannt sein, um Zeiger oder Referenzen auf eine Klasse zu übergeben.
5. Du definierst leere Makros A und B. Folglich werden A und B in den Klassendeklarationen entfernt.Header für cA:
#ifndef A #define A class cB; class cA { int x; cB* mB; cB* func(); // Definition gehört in Quellcodedatei }; #endifHeader für cB:
#ifndef B #define B class cA; class cB { int x; cA* mA; cA* func(); // Definition gehört in Quellcodedatei }; #endifDas nächste Mal, wenn du ein Problem hast, gib doch bitte eine ordentliche Beschreibung und vor allem ohne fehlerdurchtränkte Beispiele.