Zeiger auf eine Klasse als Member
-
Hallo zusammen,
vorab, ich weiß nicht, ob ich im Titel die richtigen Begriffe gewählt habe. Ich möchte mein Problem kurz verdeutlichen:
Ich habe eine Klasse cMenu in der Datei menu.h.
Diese wird mit #include "menu.h" eingebunden. Nun soll innerhalb einer weiteren Klasse cMenuState ein Zeiger erstellt werden vom Typ *cMenu. Aber genau das funktioniert nicht, und ich weiß einfach nicht warum.//menu.h class cMenu { public: cMenu(int type); void update(); void draw(); };//menuState.h #include "menu.h" class cMenuState : public cGameState { private: cMenu *menu; public: ... };Ich habe den Code mal auf das allerwesentlichste reduziert.
Folgende Fehlermeldung bekomme ich:1>c:\c++\projects\clone\clone\menustate.h(16) : error C2143: Syntaxfehler: Es fehlt ';' vor ''
1>c:\c++\projects\clone\clone\menustate.h(16) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\c++\projects\clone\clone\menustate.h(16) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.*Das blöde: Wenn ich genau vor die cMenuState eine leere Klasse setze (oder eine beliebige andere) und das ganze nochmal mache, funktioniert ja alles. Nur mit dieser Klasse nicht.
//Das geht class test { }; class cMenuState : public cGameState { private: test *mytest; public: ... };Ich weiß jetzt natürlich nicht, ob ich zu viel weggestrichen habe und das Problem tatsächlich ganz woanders liegt. Aber selbst bei Auskommentierung aller Zeilen, die ich hier nun weggelassen habe, tritt der Fehler immer noch auf.
Vielleicht kann sich ja jemand zumindest anhand der Fehlermeldung einen Reim drauf machen.Gruß,
blDraX
-
Inkludierst du zufälligerweise
menuState.hinmenu.h? Wenn ja, dann hast du eine zyklische Abhängigkeit. Dann wäre Forward Declaration etwas für dich:
http://en.wikipedia.org/wiki/Forward_declarationGrüssli
-
Großartig, vielen Dank.
