1
我想重寫父類的子類的虛擬方法,但我得到錯誤「無法分配抽象的對象類型」。這是我的父類:無法覆蓋父類的虛擬方法導致錯誤「無法分配抽象類型的對象」
class GameState
{
public:
virtual ~GameState(){};
virtual void captar_eventos(Tile *tiles[], Objeto * objs, Tipo * tipos, bool * quit) = 0;
virtual void logic(Tile *tiles[], Objeto * objs, Tipo * tipos, bool * quit) = 0;
virtual void render(Tile *tiles[], Objeto *objs, Tipo *tipos, float interpolacion) = 0;
void message(char *);
};
這是我的子類:
class Menu : public GameState
{
private:
public:
Menu();
~Menu();
void captar_eventos(Objeto * objs, Tipo * tipos, bool * quit);
void logic(Objeto * objs, Tipo * tipos, bool * quit);
void render(Objeto *objs, Tipo *tipos, float interpolacion);
};
Menu::Menu()
{
}
Menu::~Menu()
{
}
void Menu::captar_eventos(Objeto * objs, Tipo * tipos, bool * quit){
}
void Menu::logic(Objeto * objs, Tipo * tipos, bool * quit){
}
void Menu::render(Objeto *objs, Tipo *tipos, float interpolacion){
}
當我嘗試創建一個新的變量類菜單:
currentState = new Menu();
我得到錯誤:
cannot allocate an object of abstract type 'Menu'
because the following virtual functions are pure within 'Menu'
virtual void GameState::captar_eventos(Tile**, Objeto*, Tipo*, bool*)
virtual void GameState::logic(Tile**, Objeto*, Tipo*, bool*)
virtual void GameState::render(Tile**, Objeto*, Tipo*, float)
爲什麼說它們是抽象的w ithin菜單?我究竟做錯了什麼?