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


  • Administrator

    Inkludierst du zufälligerweise menuState.h in menu.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_declaration

    Grüssli



  • Großartig, vielen Dank. 🙂


Anmelden zum Antworten