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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
standard(string,Centrée,Cviande,Clegume,Cdessert)
et celui de Cenfant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

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