Bonjour a tous, j'ai un petit probleme :
J'ai une classe CMere par exemple et une classe CFille dérivée de CMere, ma classe CFille contient des méthodes virtuelles de CMere mais aussi des méthodes qui lui sont propres.
J'ai ensuite une liste (dans une autre classe ou fonction, peu importe) de pointeurs de CMere où je peux mettre des CMere ou des CFille.
Mon probleme est que selon le type (CMere ou CFille), j'appelerai telle ou telle méthodes.
J'ai donc utilisé un enum EType dans la classe de base (CMere) avec tout les types de filles possibles et un constructeur qui demande un type en parametre.
Les classes filles vont utiliser ce constructeur pour specifier leur type et une methode getType dans la classe CMere permet de savoir le type de la classe.
Mais cette méthode ne me plait pas trop car il faut chaque fois modifier la classe de base (rajouter un type dans l'enum) si on doit rajouter une classe fille et je pense que ca reflete une mauvaise conception.
Je viens de voir qu'il y avait moyen de le faire avec le RTTI et les typeid ou les dynamic_cast pour connaitre le type des classes mais il parait que c'est lourd a gérer point de vue performance.
Donc ma question est de savoir si ma méthode etait bonne, ou bien si le RTTI etait mieux ou bien si finalement c'est une mauvaise conception des classes.
Car je me dis qu'en fin de compte le meilleur est d'avoir la classe de base qui contient toute les méthodes virtuelles possible des classes filles ainsi plus besoin de connaitre le type, il suffit d'appeler la méthode virtuelle qu'on a besoin mais le probleme c'est que mes classes filles sont forts differentes et donc la classe mere serait trop "grosse" et aussi si je devrai ajouter une classe fille je devrai quand meme modifier la classe mere.
Merci
Partager