假设我有 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
继承,则在.I
B
A::X()
I::X()
C
但是,我无法更改B
.
我的问题:我可以在无法改变的情况下A::X()
解决问题吗?我尝试过声明和虚拟化无济于事。我试图没有多余的代码(例如,让 C 声明 X() { A::X(); })。有什么巧妙的技巧吗?I::X
C
B
A
B
C
另外 - 有一些非常像这样的问题,但我找不到任何关于使用virtual
继承的讨论。如果我错过了,请指给我一个。