相关疑难解决方法(0)

为什么单个虚拟继承不足以解决可怕的钻石问题?

struct B { int i; };
struct D1 : virtual B {};
struct D2 : B {};  // <-- not virtual
struct DD : D1, D2 {};
Run Code Online (Sandbox Code Playgroud)

上面已经编码,还是编译器的需求D2也将virtual:

DD d;
d.i = 0; // error: request for member `i' is ambiguous
Run Code Online (Sandbox Code Playgroud)

我不明白的是,一旦你提示编译器Bvirtual关于DD(via D1)那么为什么它仍然i是模棱两可的?

(如果我的内存服务正确,那么旧的VC++(2006年)就足以用单virtual继承来证明这一点)

c++ virtual-inheritance diamond-problem language-lawyer

4
推荐指数
1
解决办法
383
查看次数