struct B { int i; };
struct D1 : virtual B {};
struct D2 : B {}; // <-- not virtual
struct DD : D1, D2 {};
在上面编码之后,编译器仍然D2要求virtual:
DD d;
d.i = 0; // error: request for member `i' is ambiguous
我不明白的是,一旦您提示了与(via ) 相关的编译B器,那么为什么它仍然是模棱两可的?virtualDDD1i
(如果我没记错的话,较旧的 VC++(2006 年)足以通过单virtual继承来解决这个问题)