C++ 未定义的抽象类构造函数

标签 c++ inheritance segmentation-fault abstract-class

我最近在 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/

相关文章:

c++ - 使用 AES 和 Crypto++ 加密解密单个 block

c++ - 为什么这个数组分配会导致段错误?

c - UDP 段错误

c++ - 用于重载的通用类成员函数

c++ - 在 MacOS X Mavericks 上链接 Cuda 应用程序时出错

java - 装饰器设计模式 VS 继承,运行时 VS 编译时

c++ - 最终的虚函数有什么意义?

c - 布林带段错误

具有混合虚拟和非虚拟基础的 C++11 类格?

python - 学习继承的意想不到的结果