내 다음 게임에서는 내 게임의 아키텍처를 향상시키기위한 클래스를 만듭니다. GameState라는 추상 클래스가 있으며 모든 게임 상태 (메뉴, 창, 스크린, 게임 자체)는 게임에 추가되어야하지만 내 GameState 디자인의 테스트 인 My BlankState는 컴파일러와 관련하여 문제를 일으킨다. 이유는 무엇인지, 추상 클래스로 간주된다. 왜 그런지 말해 줄 수 있을까? 나는 여기에서 정말로 명백한 무엇인가 놓치고있는 것처럼 느낀다. 여기 하위 클래스가 추상 클래스로 간주되는 이유는 무엇입니까?
는 GameState.h 내용#ifndef GUARD_GAMESTATE_H
#define GUARD_GAMESTATE_H
#include<SDL.h>
class Game;
class GameState {
protected:
Game *m_pGame;
public:
GameState(Game& );
virtual void load() = 0;
virtual void handle_events(SDL_Event& events) = 0;
virtual void logic() = 0;
virtual void draw() = 0;
virtual void unload() = 0;
virtual ~GameState() = 0;
};
class BlankState : public GameState {
private:
SDL_Surface *background;
public:
BlankState(Game& game);
void load();
void handle_events();
void logic();
void draw();
void unload();
~BlankState();
};
#endif
입니다 그리고 여기 당신의 도움
을 위해 사전에 GameState 생성자 및 BlankStates 상속 방법#include"GameState.h"
#include"Game.h"
#include"AssetLoader.h"
GameState::GameState(Game& game) {
m_pGame = &game;
m_pGame->addState(this);
}
BlankState::BlankState(Game& game)
:GameState(game)
{}
void BlankState::load() {
background = AssetLoader::loadImage("assets\background.png");
}
void BlankState::handle_events() {}
void BlankState::logic() {}
void BlankState::draw() {
SDL_Rect lol;
lol.x = 0;
lol.y = 0;
SDL_BlitSurface(background, NULL, m_pGame->getSurface(), &lol);
}
void BlankState::unload() {
SDL_FreeSurface(background);
}
BlankState::~BlankState() {}
감사를 구현 GameState.cpp입니다
당신이 받고있는 정확한 오류 메시지는 무엇입니까 : 누구의 서명 컴파일 오류가 발생하게 기본 클래스에서 가상 함수의 시그니처와 호환되지 않는 기능은
override
하려고? –