【发布时间】:2015-10-30 03:44:43
【问题描述】:
假设您有以下类层次结构:
class A
{
public:
virtual void foo() {}
}
class B
{
public:
virtual void foo() {}
}
class C: public A, public B
{
public:
virtual void foo() override { } // This overrides both
}
class D: public A, public B
{
public:
// Is there syntax so that there is a separate override for each?
// Maybe something like:
// virtual void A::foo() override {}
// virtual void B::foo() override {}
}
有没有办法在类 D 上有两个 foo 函数,这样如果 D 作为对 A 的引用传递,则调用 D 中的一个函数,如果 D 作为对 B 的引用传递,则调用另一个函数在 D 中被调用?
如果您从两个外部库继承,并且它们恰好具有重叠的函数说明符,则用例会是这样?
【问题讨论】:
-
据我记得,您必须添加一个额外的类,该类继承自一个类,然后从该类继承。
标签: c++ multiple-inheritance overriding virtual-functions