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 : Sélectionner tout - Visualiser dans une fenêtre à part
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