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

Смежные вопросы