2013-10-08 4 views
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 *); 
}; 

그리고 이것은 내 아이 클래스입니다 :

currentState = new Menu(); 

내가 얻을 오류 :

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){ 
} 

나는 새로운 변수 클래스 메뉴를 만들려고

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) 

왜 그것이 추상적이라고 말합니까? 메뉴? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

MenuGameState의 가상 메소드를 구현하려는 시도에서 올바른 수의 인수를 포함하지 못했습니다. 그들은 각각 Tile *tiles[] 인수가 누락되었습니다.

즉, Menu은 세 가지 다른 방법을 구현하고 있으며 그 중 어떤 것도 GameState 가상 메서드보다 우선합니다. 따라서 컴파일러 오류입니다.

관련 문제