我有一个类C,它位于带有Base,A和B类的菱形中。有一个方法Base :: foo(),它在A和B类中被重写。当我调用C时:: foo(),我想调用B :: foo(),而不是A :: foo()。
一个解决方案声称,这样做的方法是使A实际上从Base继承并且B通常继承。这样,我可以实现这一点,而无需重新实现C :: foo()。
但是,我还没有找到关于这是否可能的任何其他信息,因为似乎A和B都需要声明为虚拟,以避免创建两个Base副本。
建议的解决方案是否正确?
答案 0 :(得分:0)
以这种方式明确定义C::foo()
:
C::foo() {
B::foo();
}