C ++ абстрактный класс проблема - PullRequest
2 голосов
/ 24 марта 2011

У меня есть абстрактный класс, определенный следующим образом:

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 не поддерживает явные переопределения или я испортил что-то еще?

Заранее спасибо

1 Ответ

2 голосов
/ 24 марта 2011

Очевидно, он не поддерживает explicit. Это нормально, потому что , вероятно, не пойдет в стандарт .

...