Héritage et d'appel de méthode
Bonjour à tous,
Je me suis heurté à un problème et j'aimerai avoir vos avis pour résoudre ce type de conflit. Disons que l'on dispose des classes suivantes:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
class Aliment
{ /* class abstraite */ }
class Viande : public Aliment
{ /* ... */ }
class Legume : public Aliment
{ /* ... */ }
class Selecteur_Aliment
{
Aliment * SelectOn_Client(ClientType client_type)
{
if(client_type == VEGAN )
return new Legume();
else
return new Viande();
}
}
class Cuiseur
{
private:
void Griller(const Legume & leg) const
{ /* ... */ }
void Griller(const Viande & viande) const
{ /* ... */ }
public:
void Preparer(ClientType client_type)
{
Griller(*AlimentSelecteur.SelectOn_Client(client_type));
}
} |
Ce code ne compile pas parce que AlimentSelecteur.SelectOn_Client renvoit un pointeur sur un objet Aliment et il n'y a pas de methode Griller(Aliment).
Comment faire pour que soit appelée la methode qui correspond à l'objet passé? (Viande ou Légume).
Merci