我有一个抽象类定义如下: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不支持显式覆盖,还是我把其他东西搞乱了?
在此先感谢
我的印象是这种显式和覆盖的使用没有被接受到C++ 0x中以支持属性。你确定这将在新标准下合法吗? – templatetypedef 2011-03-24 07:08:49