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)
我不明白的是,一旦你提示编译器B是virtual关于DD(via D1)那么为什么它仍然i是模棱两可的?
(如果我的内存服务正确,那么旧的VC++(2006年)就足以用单virtual继承来证明这一点)