У меня есть абстрактный класс, определенный следующим образом:
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 explicit : public AnimatedDraw
{
public:
ScreenLayer(void);
virtual void Draw(sf::RenderWindow &window) override; //I'll need to be able to override these again in subclasses
virtual void Draw(sf::RenderWindow &window, sf::Shader &shader) override;
virtual void Update(sf::Clock &clock) override;
~ScreenLayer(void);
};
Исходный файл пустработает прямо сейчас и выглядит следующим образом:
#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)
{
}
Я делаю что-то не так, так как мой компилятор (VC2010) выдает несколько ошибок, в том числе жалуется, что не может найти ScreenLayer
в файле ScreenLayer.cpp
и несколько об этой строке class ScreenLayer explicit : public AnimatedDraw
Я раньше не пытался использовать явные переопределения, но согласно статье C ++ 0x в Википедии именно так вы и делаете.VC2010 не поддерживает явные переопределения или я испортил что-то еще?
Заранее спасибо