Da una rapida lettura il tuo codice non funziona perchè le classi A e C non hanno nessuna relazione tra loro. Dovresti derivare C da A, e derivare B da A e C in modo virtual.
Ripeto, da una rapida lettura, può darsi anche che abbia capito tutt'altra cosa.