我有以下未编译的钻石类结构: int a; virtual void doSomething();
class NotMineToTouch :Base继承;但是,我不允许更改NotMineToTouch (或Base)。还有别的解决办法吗?我可以随意更改MyParentClass和EvilDiamond;然而,EvilDiamond必须继承MyParentClass和NotMineToTouch,MyParentClass必须继承Base,不能<e
我理解并阅读了足够多的关于钻石问题的文章,它是通过虚拟继承解决的。我的问题是
class D : public B, public C {}
编译器将检查第一个基类B,并注意到它实际上是从class A继承的。然后编译器将遍历类C并注意到它实际上是从A类继承的,但是由于它实际上是由C继承的,而且A的一个实例已经存在,所以它不会包括一个新实例。从而解决
因此,我想出了以下方法:class Additional: virtual public Base {};class MyDerived1: public Derived1, public Additional {};
然而,当我在互联网上搜索时,似乎在钻石继承的情况下,我们必须对类Derived1和Additional使用虚拟继承。所以我的问题</em