【发布时间】: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