|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
[c++]problema Ereditarieta multipla
Allora ...
E arrivato il momento di porvi un problemino alquanto complesso ![]() che preferisco descrivervi con il codice: Codice:
class Assassino { public: virtual void uccidi()=0; } class Accoltellatore: public Assassino { public: virtual void prendiColtello()=0; } class Pistolero: public Assassino { public: virtual void prendiPistola()=0; } Codice:
class Stragista: public Accoltellatore,public Pistolero { /* Implemento tutti i metodi virtuali. */ } Codice:
void main() { Assassino * ass = new Stragista(); } inveci mi da un bel errore del tipo: impossibbile assegniare a Assassino * perchè ambiguo... Cosa vuol Dire ?? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ah ... i nomi che hai usato sono bellissimi. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Non posso provare ma ad intuito la soluzione dovrebbe essere questa:
Codice:
class Assassino { public: virtual void uccidi()=0; } class Accoltellatore: public virtual Assassino { public: virtual void prendiColtello()=0; } class Pistolero: public virtual Assassino { public: virtual void prendiPistola()=0; } Ultima modifica di tglman : 31-05-2007 alle 10:34. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Sembrava risolto invece ecco qua.....
ho un problem del genere: Codice:
Assassino *ass=.... Accoltellatore *acc = (Accoltellatore *)ass; error: cannot convert from base ‘Assassino’ to derived type ‘Accoltellatore’ via virtual base ‘Assassino’ e adesso....... |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Così dovrebbe funzionare.
Codice:
Assassino *ass= new Accoltellatore(); Accoltellatore *acc = dynamic_cast<Accoltellatore *>ass; if (acc != NULL) ... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:29.