Bonjour,
Je m’amuse à créer une interface graphique en C++ :
Pour ce faire, j’ai décidé d’utiliser une class de base nommé ‘Gadget’ qui est une classe mère.
Les gadgets tels que ‘ImageBox’, ‘Button’, ‘GroupBox’, ‘Label’ … hérite donc de la class ‘Gadget’.
Ensuite, il me suffit de mettre tous mes gadgets dans une liste unique de Gadget (‘ImageBox’, ‘Button’, ‘GroupBox’, ‘Label’ confondu).
Pour accéder à un membre d’ImageBox par exemple, je passe par l’instance de la class ‘Gadget’ se trouvant dans la liste des gadgets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::map<gadget_Id, Gadget*> listGadget;
Les fonctions membres virtuels de la class ‘Gadget’ accèdent à la classe fille sans connaitre son type (imageBox, Label, etc…)
Cependant, Je bloque sur une amélioration que je voulais mettre en place.
En effet, si je veux par exemple créer un clone d’une ‘ImageBox’.
Je me suis dit aucun problème, je fais un constructeur de copie dans la classe ‘ImageBox’.
Mais c’est là que cela se complique (voici le constructeur) :
Le problème est que je ne peux pas donner ImageBox à mon constructeur car mes gadgets sont stocker comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ImageBox(ImageBox* imgbox) ;
Le constructeur de mon ImageBox ne fonctionne pas bien évidement car il veux une instance d’ImageBox et non de ‘Gadget’ (qui est la classe mère).
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::map<gadget_Id, Gadget*> listGadget;
J’ai donc testé une autre solution de constructeur de copie mais cette fois avec la class mère en paramètre :
Et là évidement le constructeur fonctionne, mais je n’ai pas accès aux membres privé d’ImageBox
Code : Sélectionner tout - Visualiser dans une fenêtre à part ImageBox(Gadget* gadget) ;
Tous çà dans le but de créer des instances d’image afin de ne pas avoir plusieurs copie d’une même image en mémoire mais juste un pointeur vers une seule et unique image.
Je suis obliger de créer des accesseurs virtuel dans la classe mère pour accéder aux variables membres privés de chaque classes filles ?
Ou bien connaissez-vous une solution ?
Partager