错误LNK2019未解析的外部符号虚拟类

error LNK2019 unresolved external symbol virtual class

本文关键字:外部 符号 虚拟 LNK2019 错误      更新时间:2023-10-16

我知道这个问题被问了好几次,但我不知道如何解决。

当我试图构建我的项目时,我遇到了这个错误:

error LNK2019: unresolved external symbol "public: virtual __thiscall IGameState::~IGameState(void)" (??1IGameState@@UAE@XZ) in function "public: virtual __thiscall MenuState::~MenuState(void)" (??1MenuState@@UAE@XZ)

这是我的代码:

IGameState.h

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

菜单状态.h

#include "IGameState.h"
class MenuState : public IGameState
{
public:
    MenuState();
    ~MenuState();
    void update();
    void render();
};

菜单状态.cpp

#include "MenuState.h"
#pragma region Constructor
MenuState::MenuState() {
}
MenuState::~MenuState() {
}
#pragma endregion

void MenuState::render() {
}
void MenuState::update() {
}

析构函数怎么了?谢谢

错误消息告诉您这是链接错误,因为您尚未实现~IGameState(),尝试添加以下代码:

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