Я уверен, что это что-то простое с моей стороны, но я не могу понять, почему мой компилятор считает один из моих классов абстрактным. Вот ситуация:
У меня есть такой абстрактный базовый класс:
class AnimatedDraw
{
public:
virtual void Draw(sf::RenderWindow &window) = 0;
virtual void Draw(sf::RenderWindow &window, sf::Shader shader) = 0;
virtual void Update(sf::Clock &time) = 0;
};
И я наследую от него так:
class ScreenLayer : public AnimatedDraw
{
public:
ScreenLayer(void);
virtual void Draw(sf::RenderWindow &window);
virtual void Draw(sf::RenderWindow &window, sf::Shader &shader);
virtual void Update(sf::Clock &clock);
~ScreenLayer(void);
};
для справки, файл ScreenLayer.cpp выглядит следующим образом:
#include "ScreenLayer.h"
ScreenLayer::ScreenLayer(void)
{
}
void ScreenLayer::Draw(sf::RenderWindow &window)
{
}
void ScreenLayer::Draw(sf::RenderWindow &window, sf::Shader &shader)
{
}
void ScreenLayer::Update(sf::Clock &clock)
{
}
ScreenLayer::~ScreenLayer(void)
{
}
Однако, когда я пытаюсь для использования моего производного класса (т.е. AnimatedDraw * testDrawer = new ScreenLayer;
) мой компилятор жалуется, что ScreenLayer является абстрактным. Изменение AnimatedDraw на ScreenLayer также было недопустимым по той же причине. Я перезаписал все абстрактные функции в моем базовом классе, не так ли? Я не уверен, почему это рассматривается как абстрактное. Любая помощь будет оценена
Спасибо