Votre diagramme d'héritage ressemble à ceci:
Concrete
|
D
/ \
C B
/ \
A A
Lorsque vous essayez de convertir votre Concrete*
en un A*
, le compilateur n'a aucune idée de quelle instance de A
tu veux. Voulez-vous convertir au A
ce C
dérive de, ou le A
ce B
dérive de?
La solution consiste à utiliser l'héritage virtuel pour dériver B
et C
de A
, de sorte qu'il n'y a qu'un seul cas de A
.
Concrete
|
D
/ \
C B
\ /
A