Stavo provando a mettere in pratica l'esempio che fa Stroustrup circa le classi base duplicate. Secondo quello che scrive, avendo delle classi
codice:
structA {
A *next;
};
class B : public A { };
class C : public A { };
class D : public B, public C { };
si dovrebbe poter scrivere
codice:
D *d = new D;
d->B::A::next=0;
d->C::A::next=0;
per riferirsi ai due campi next che eredita D tramite B e C. Tuttavia, compilando quanto scritto con G++ ottengo un bell'errore 'A' is an ambiguous base of 'D' su entrambe le righe, mentre se scrivo d->B::next e d->C::next non ci sono problemi. Non riesco proprio a spiegarmelo, come mai le chiamate risultano ambigue quando non dovrebbero?
Grazie, ciao