您的继承图看起来像这样:
Concrete
|
D
/ \
C B
/ \
A A
当您尝试转换您的 Concrete*
进入 A*
, ,编译器不知道哪个实例 A
你要。你想转换为 A
那 C
源自或 A
那 B
源自于?
解决方案是使用虚拟继承来得出 B
和 C
从 A
, ,因此只有一个实例 A
.
Concrete
|
D
/ \
C B
\ /
A