我最近在 C++ 中遇到了虚方法/继承方面的一些麻烦
起初,如果我尝试扩展一个父类(super class),我会得到这个错误:
'Undefined reference to 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;
};
最佳答案
尝试
GameState() { }
代替
GameState();
或在其他地方定义它。
不过,我不确定它是否与虚拟方法有关。我认为其他地方有错误。也许,未初始化的指针?
关于C++ 未定义的抽象类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422072/