2

子クラスを作成しようとしていますUndefined reference to "vtable for Menu"が、同じコードで多くの子クラスを作成したため、クラス コンストラクターでエラーが発生します。

class GameState
{
    public:
        virtual ~GameState(){};
        virtual void handle_events() = 0;
        virtual void logic() = 0;
        virtual void render() = 0;
};

class Level: public GameState
{
    private:
    public:
        Level();
        ~Level();
        void handle_events();
        void logic();
        void render();
};

Level::Level() // OK
{
}

~Level::Level()
{
}

class Menu : public GameState
{
    private:
    public:
        Menu();
        ~Menu();
        void handle_events();
        void logic();
        void render();
};

Menu::Menu() // ERROR
{
}

~Menu::Menu()
{
}

私は何を間違っていますか?

4

1 に答える 1

3

チルダ (~) がデストラクタの間違った場所にある:

~Menu::Menu()
{
}

次のようにする必要があります。

Menu::~Menu()
{
}

また、他の 3 つの仮想機能の定義も提供する必要があります。

于 2013-10-07T22:21:56.110 に答える