Итак, для моей следующей игры я создаю классы, чтобы улучшить архитектуру моей игры. У меня есть абстрактный класс GameState, и все игры GameStates (меню, окна, экран, сама игра) должны наследовать его, чтобы быть добавленным в игру, но мой BlankState, который является испытанием моего дизайна GameState, вызывает у меня проблемы с компилятором, поскольку он по какой-то причине считается абстрактным классом, может ли кто-нибудь сказать мне, почему? Я чувствую, что мне не хватает чего-то действительно очевидного здесь.Почему мой подкласс рассматривается как абстрактный класс?
Вот содержание 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.cpp где я реализую конструктор и BlankStates GameState наследуемые методы
#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() {}
Спасибо заранее за вашу помощь
Что такое точное сообщение об ошибке вы получаете? –