2013-10-07 1 views
2

클래스 생성자에서 자식 코드를 만들려고합니다. 동일한 코드로 많은 자식 클래스를 만들었 기 때문에 이상한 오류 Undefined reference to "vtable for Menu"이 발생합니다."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() 
{ 
} 

내가 뭘 잘못하고 있니?

+2

http://www.parashift.com/c++-faq-lite/link-errs-missing-vtable.html 전체 코드입니까? 컴파일 만하는 경우 나머지 가상 기능에 대한 정의가 없다는 불만이있을 것입니다. –

+2

이 오류 메시지는 main에 대한 소멸자가 구현되지 않았 음을 나타냅니다. – simon

답변

3

귀하의 물결표 (~)는 소멸자에 잘못된 위치에 있습니다 :

~Menu::Menu() 
{ 
} 

가 있어야한다 : 당신은 또한 다른 세 개의 가상 기능에 대한 정의를 제공해야

Menu::~Menu() 
{ 
} 

.

관련 문제