好吧,我明白当您完全控制所有类时如何解决死亡继承的菱形继承(钻石问题),但是如果您只控制最后一个类以从两个类继承,该怎么办 所以我有这个:
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
我无法编辑 B 和 C,只能编辑 D,有没有简单的方法可以做到这一点?
最佳答案
这是一个很好的理由,您不能强制 B
和 C
共享 A
。考虑:
struct A {int i;};
struct B : A {
B(){i=3;}
void foo() {
//crash if i!=3
}
};
struct C : A {
C(){i=4;}
void bar() {
//crash if i!=4
}
};
B
和 C
是很好的类。他们无法处理他们无法进入的情况(i 的值无效)。
如果有一种方法可以满足您的要求(struct D:B,C
,其中B
和C
共享A
),D::A::i
的值是多少?
虚拟继承意味着“我需要这个类,但我不需要它的一些有效值,而且我完全同意别人乱搞它”。
关于C++ 死亡钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16987968/