声明只有一个类公共虚拟

时间:2013-10-14 05:08:31

标签: c++ multiple-inheritance

我有一个类C,它位于带有Base,A和B类的菱形中。有一个方法Base :: foo(),它在A和B类中被重写。当我调用C时:: foo(),我想调用B :: foo(),而不是A :: foo()。

一个解决方案声称,这样做的方法是使A实际上从Base继承并且B通常继承。这样,我可以实现这一点,而无需重新实现C :: foo()。

但是,我还没有找到关于这是否可能的任何其他信息,因为似乎A和B都需要声明为虚拟,以避免创建两个Base副本。

建议的解决方案是否正确?

1 个答案:

答案 0 :(得分:0)

以这种方式明确定义C::foo()

C::foo() {
  B::foo();
}