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
私が理解していないのは、(経由で)コンパイラB
にプロンプトを表示virtual
した後、なぜそれがまだ曖昧なのかということです。DD
D1
i
(私の記憶が正しければ、古いVC++(2006年)は、単一virtual
継承だけでこれを理解するのに十分な能力がありました)