假设我有 4 节课:
class I { public: virtual void X() = 0; };
class A : public virtual I { public: virtual void X() { } };
class B : public I { };
class C : public A, public B { };
I,B并且C是抽象的,而 asA不是。如果我只是简单地添加到for的virtual继承,则在.IBA::X()I::X()C
但是,我无法更改B.
我的问题:我可以在无法改变的情况下A::X()解决问题吗?我尝试过声明和虚拟化无济于事。我试图没有多余的代码(例如,让 C 声明 X() { A::X(); })。有什么巧妙的技巧吗?I::XCBABC
另外 - 有一些非常像这样的问题,但我找不到任何关于使用virtual继承的讨论。如果我错过了,请指给我一个。