2013-06-24 82 views
3

我知道这个问题被问了几次,但我不知道如何解决它。错误LNK2019无法解析的外部符号虚拟类

我得到当我试图建立我的项目,这样的错误:

error LNK2019: unresolved external symbol "public: virtual __thiscall IGameState::~IGameState(void)" ([email protected]@[email protected]) in function "public: virtual __thiscall MenuState::~MenuState(void)" ([email protected]@[email protected]) 

这里是我的代码:

IGameState.h

class IGameState 
{ 
    public: 
     virtual ~IGameState(); 
     virtual void update() = 0; 
     virtual void render() = 0; 
}; 

MenuState.h

#include "IGameState.h" 

class MenuState : public IGameState 
{ 
public: 
    MenuState(); 
    ~MenuState(); 
    void update(); 
    void render(); 
}; 

MenuState.cpp

#include "MenuState.h" 

#pragma region Constructor 

MenuState::MenuState() { 

} 

MenuState::~MenuState() { 

} 

#pragma endregion 


void MenuState::render() { 

} 

void MenuState::update() { 

} 

有什么不对的析构函数? 谢谢。

+1

你还没有定义,只是声明。这对编译器来说已经足够了,但对链接器来说却不够。 – jrok

回答

6

错误消息告诉你,这是一个链接错误,因为你还没有实现~IGameState(), 尝试添加以下代码:

class IGameState 
{ 
    public: 
     virtual ~IGameState() {} 
          //^^^^ define it 
     virtual void update() = 0; 
     virtual void render() = 0; 
}; 
+0

谢谢!我没有看到需要实施的虚拟功能。 – ApheX

+0

@ApheX欢迎您。很高兴帮助! – billz

+0

@bilz为纯抽象类定义析构函数有什么意义? – saurabheights

相关问题