2011-03-24 122 views
2

我有一个抽象类定义如下:C++抽象类的问题

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)产生se包括抱怨在ScreenLayer.cpp文件中找不到ScreenLayer,以及关于此行的几个class ScreenLayer explicit : public AnimatedDraw我之前没有尝试过使用显式覆盖,但是根据C++0x article on wikipedia,这就是您的操作方法。 VC2010不支持显式覆盖,还是我把其他东西搞乱了?

在此先感谢

+0

我的印象是这种显式和覆盖的使用没有被接受到C++ 0x中以支持属性。你确定这将在新标准下合法吗? – templatetypedef 2011-03-24 07:08:49

回答