В последнее время у меня возникли некоторые проблемы в C ++ с виртуальными методами / наследованием
Сначала, если я пытаюсь расширить суперкласс, я получаю эту ошибку:
'Неопределенная ссылка на GameState :: GameState ()'
но если я удаляю все конструкторы вместе, я не получаю вышеуказанную ошибку, но в итоге получаю ошибку сегментации, которая возникает при вызове виртуального метода.
Это мой код:
#ifndef GAMESTATE_H
#define GAMESTATE_H
#include <stdlib.h>
#include "Resources.h"
#include "Renderer.h"
class GameState {
public:
GameState();
virtual void init(Resources *res) = 0;
virtual void exit() = 0;
virtual void update() = 0;
virtual void render(Renderer *renderer) = 0;
};
#endif // GAMESTATE_H
и это подкласс:
#include "GameState.h"
class MainGameState : public GameState {
public:
MainGameState() : GameState() {
}
virtual void init(Resources *res) {
}
virtual void update() {
printf("test\n");
}
virtual void render(Renderer *renderer) {
}
virtual void exit() {
}
private:
SDL_Surface *image;
};