J'ai 1 classe "Base" avec 2 méthodes:
"getName" qui est virtuelle
"getOption" qui renvoie une valeur par défaut
Dans un bibliothèque liée dynamiquement, j'ai une classe "Cas1" qui hérite de "Base" et redéfini les 2 méthodes
"getName"
"getOption"
Dans mon code principal je crée (via la bibliothèque dynamique) une instance de la classe Cas1, seulement le type "Cas1" est inconnu par mon code principal. Il voit cette instance comme un type Base qu'il connaît, lui. J'appelle cette instance maBase.
Base *maBase = ...
Lorsque j'appelle maBase.getName(), je récupère le contenu de Cas1::getName()
Jusque là tout va bien.
Lorsque j'appelle (à la ligne suivante) maBase.getOption(), je récupère le contenu de Base::getOption(). Je pense que cela vient du fait que Base::getOption est initialisée, contrairement à Base::getName().
Hors moi, je voudrais récupérer Cas1::getOption().
Je rappelle que je ne connaît pas le type Cas1 puisqu'il est importé dynamiquement, (c'est une contrainte du projet que de l'importer ainsi)
J'ai donc pensé à un truc du genre
maBase = static_cast<typeid(*maBase)> maBase;
mais typeid ne renvoie pas un type mais un objet type_info.
Auriez vous
un moyen de déterminer dynamiquement le type "Cas1" pour le transtypage,
ou un moyen autre de récupérer Cas1::getOption au lieu de Base::getOption ?
Éventuellement, est-il possible d'importer un type inconnu par le programme principal à partir d'une bibliothèque dynamique ?
n'est-ce pas le moment d'utiliser le mot-clé virtual ?
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........
de rien ;)
n'hésite pas à rester sur ce forum et le faire vivre ;)
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........