【问题标题】:C++ interface multiple inheritance with same methodC++接口多重继承,方法相同
【发布时间】:2011-08-13 01:20:06
【问题描述】:

我需要从两个接口继承,这两个接口都有相同的方法,在这两种情况下应该执行完全相同的事情。这段代码是否正确?对于某种代理类,我需要它。感谢您的回答。

class InnerInterface {
    virtual int getID() const = 0;
    //...
};
class OuterInterface {
    virtual int getID() const = 0;
    //...
};
class Foo : public InnerInterface, public OuterInterface {
    virtual int getID() const;
    //all abstract methods
};

【问题讨论】:

  • 方法应该是virtual吧?
  • 很好的问题 - 从标题我期待一个不错的简单钻石继承(所以使用虚拟继承)的东西,但我不确定。您当然可以使用范围解析来分别覆盖两个具有相同名称的继承方法,但这意味着重复代码,所以这很有趣。
  • 是的。这个论坛上有很多钻石问题,但我什至在书中也没有找到类似的东西。所以我问了这个问题。
  • 来自COM世界的IUnknown::QueryInterface就是这样的。

标签: c++ interface multiple-inheritance


【解决方案1】:

是的,这是正确的。单个 getID() 方法可以覆盖两个虚拟方法。

【讨论】:

  • 您能否提供一些有关这方面的信息以及结果如何?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多