我有:
class XILightSource
{
public:
virtual XVec2 position() const = 0;
};
class XLightSprite : public XSprite, public XILightSource
{
};问题是XSprite已经有了相同的函数position。我如何对编译器说,我想要使用XSprite::position函数作为XILightSource::position()的实现?
发布于 2011-10-07 13:49:42
重写它并调用XILightSource::position():
class XLightSprite : public XSprite, public XILightSource
{
public:
XVec2 position() const { return XSprite::position(); }
};发布于 2011-10-07 14:00:54
只需添加一行:
class XLightSprite : public XSprite, public XILightSource
{
public:
using XSprite::position;
};发布于 2011-10-07 14:03:46
实际上,您不需要做任何特殊的事情。
默认情况下,在XLightSprite中实现XVec2 position() const将隐藏XSprite的position(),并作为XLightSource中定义的虚拟函数的覆盖。
但是,如果您想要澄清您的意图是重写该函数,则可以添加using声明
class XLightSprite : public XSprite, public XILightSource
{
public:
using XSprite::position;
XVec2 position() const;
};但是,请注意,如果来自XSprite的position()也是相同格式的虚拟函数,则新的实现也将作为XSprite中的position的覆盖。
https://stackoverflow.com/questions/7683482
复制相似问题