は、私はこのエラーを取得:C++未定義抽象クラスのコンストラクタ
'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'をどこで定義しましたか? –
どのようにこれらのクラスを使用していますか – rerun
多分、呼び出しの例を投稿してください。また、valgrindにセグメンテーションフォールトを与えるものを尋ねることができます – Tim