|
|||||||
|
|
|
![]() |
|
|
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 11: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: 04:07.




















