0

我有一个类 C,它位于具有类 Base、A 和 B 的菱形中。有一个方法 Base::foo(),在类 A 和 B 中都被覆盖。当我调用 C::foo (),我想调用 B::foo(),而不是 A::foo()。

一种解决方案声称这样做的方法是使 A 虚拟地从 Base 继承并让 B 正常继承。这样,我无需重新实现 C::foo() 就可以实现这一点。

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

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

4

1 回答 1

0

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

C::foo() {
  B::foo();
}
于 2013-10-14T05:14:44.170 回答