Su diagrama de herencia se parece a esto:
Concrete
|
D
/ \
C B
/ \
A A
Cuando intentas convertir tu Concrete*
en una A*
, el compilador no tiene idea de qué instancia de A
usted quiere. ¿Quieres convertirte al A
que C
deriva de o el A
que B
¿deriva de?
La solución es usar la herencia virtual para derivar B
y C
de A
, de modo que solo hay una instancia de A
.
Concrete
|
D
/ \
C B
\ /
A