C++ C++;抽象类问题

C++ C++;抽象类问题,c++,c++11,abstract-class,C++,C++11,Abstract Class,我有一个抽象类,定义如下: 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 ex

我有一个抽象类,定义如下:

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)
{
}
我试图从它继承到另一个类中,定义如下:

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)
{
}
源文件现在是空函数,如下所示:

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.cpp
文件中找不到
ScreenLayer
,还有几行关于这行的
类ScreenLayer explicit:public AnimatedDraw
我以前没有尝试过使用显式重写,但根据,你就是这样做的。VC2010不支持显式覆盖,还是我搞糟了其他事情


提前感谢

显然它不支持显式。这很好,因为它是。

我的印象是,C++0x不接受这种使用显式和重写的方式,而支持使用属性。你确定这在新标准下是合法的吗?