A me nemmeno compila scritto così.Originariamente inviato da GreyFox86
codice:D *d = new D; d->B::A::next=0; d->C::A::next=0;
Invece così si.codice:D *d = new D; d->A::next=0; d->A::next=0;
Il problema è che il compilatore non sa decidere a quale ramo di derivazione riferirsi e quindi blocca tutto. E uno dei casi dovuti all'ereditarietà cosidetta a rombo o a diamante.
Se scrivi:
dovrebbe compilare (almeno a me lo fa)codice:class B : virtual public A { }; class C : virtual public A { }; class D : virtual public B, virtual public C { };
Qui c'è una spiegazione migliore
http://www.eptacom.net/pubblicazioni.../antimorf.html