首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++多重继承函数合并

c++多重继承函数合并
EN

Stack Overflow用户
提问于 2011-10-07 13:46:52
回答 4查看 160关注 0票数 6

我有:

代码语言:javascript
复制
class XILightSource 
{
public:
    virtual XVec2 position() const = 0;
};

class XLightSprite : public XSprite, public XILightSource
{

};

问题是XSprite已经有了相同的函数position。我如何对编译器说,我想要使用XSprite::position函数作为XILightSource::position()的实现?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-07 13:49:42

重写它并调用XILightSource::position():

代码语言:javascript
复制
class XLightSprite : public XSprite, public XILightSource
{
  public:
     XVec2 position() const { return  XSprite::position(); }
};
票数 6
EN

Stack Overflow用户

发布于 2011-10-07 14:00:54

只需添加一行:

代码语言:javascript
复制
class XLightSprite : public XSprite, public XILightSource
{
 public:
    using XSprite::position;
};
票数 0
EN

Stack Overflow用户

发布于 2011-10-07 14:03:46

实际上,您不需要做任何特殊的事情。

默认情况下,在XLightSprite中实现XVec2 position() const将隐藏XSpriteposition(),并作为XLightSource中定义的虚拟函数的覆盖。

但是,如果您想要澄清您的意图是重写该函数,则可以添加using声明

代码语言:javascript
复制
class XLightSprite : public XSprite, public XILightSource
{
 public:
    using XSprite::position;
    XVec2 position() const;
};

但是,请注意,如果来自XSprite的position()也是相同格式的虚拟函数,则新的实现也将作为XSprite中的position的覆盖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7683482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档