Bonjour,
J expose mon problème :
J'ai deux classes Cplat et Cmenu.
Cplat a 4 classes dérivées : Centrée Cviande Clegume Cdessert
Cmenu a 2 classes dérivées : Cstandard Cenfant
le constructeur de Cstandard est le suivant :
standard(string,Centrée,Cviande,Clegume,Cdessert)
et celui de Cenfant:
Cenfant(string,Centrée,Cdessert)
Jusque là pas de problème.
Pour des questions d'aisance, on veut stocker tous les plats dans un meme tableau :
1 2 3 4 5 6
| vector<CPlat*> liste_des_plats;
et on ajoute des plats dedans :
liste_des_plats.push_back(new Cviande(...))
liste_des_plats.push_back(new Centree(...))
liste_des_plats.push_back(new Cdessert(...))
... |
toujours pas de problème (toutes les classes ont un constructeur sans argument et la méthode affiche de la classe mère est défini en virtuelle)
on peut d'ailleurs utiliser les méthodes des classes dérivées
par contre lorsque l'on veut définir un menu en appelant le constructeur comme suit, une erreur apparait :
Cenfant test("menuenfant1",*liste_des_plats[1],*liste_des_plats[2]);
Il attend en paramètre 2 et 3 respectivement :
Centree et pas Cplat
Cdessert et pas Cplat
j'aimerais savoir s'il était possible de résoudre ce problème sans créér des tableaux différents pour chaque classe dérivée.
Merci
Partager