Design pattern c++

Résolu
walidsy Messages postés 3 Date d'inscription mardi 25 janvier 2011 Statut Membre Dernière intervention 17 décembre 2012 - 16 déc. 2012 à 21:19
walidsy Messages postés 3 Date d'inscription mardi 25 janvier 2011 Statut Membre Dernière intervention 17 décembre 2012 - 17 déc. 2012 à 20:53
Bonjour,
Je fais un petit parser avec les design pattern.
Alors j'ai un héritage des classes Integer , FLoat...d'une interface Type.
Le probleme,j'ai besoin d'une methode: Type_retour getvaleur() qui retourne soit un int , float, double..qui sont des types prédefinis.
L'idéal serait d'avoir template<typename T> getvaleur()= 0; dans l'interface Type.
sauf que dans Type toutes les méthodes sont virtuelles pures et une méthode avec template ne peut pas etre virtuelle pure.

Quelqu'un aurait une suggestion pour moi juste pour contourner ce problème.

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
16 déc. 2012 à 23:49
Bonjour.

Ce que tu cherches à faire n'est effectivement pas possible. Lorsque l'on a une virtuelle pure, on renvoit la même chose. Sinon, c'est qu'une virtuelle pure n'est pas la bonne solution, et qu'il y a un problème de conception.
Généralement, si tu cherches à faire un parser, tu auras des noeuds de grammaire, dont effectivement des types. Pour résoudre la problématique auquel tu es confronté, on utilise un design pattern visitor.
Je t'invite à t'inspirer de ma source: http://www.cppfrance.com/codes/COMPILATEUR-PSEUDO-PASCAL_49318.aspx
(Notamment la partie parsing).


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
walidsy Messages postés 3 Date d'inscription mardi 25 janvier 2011 Statut Membre Dernière intervention 17 décembre 2012
17 déc. 2012 à 20:53
vous avez raison les visitors car c ce que j'utilise pour évaluer les expressions mais je pensais pas que se serait nécessaire dans ce cas.
Mais je vais faire comme ca....

merci beaucoup vous avez fais un sacré travail dans votre code
0
Rejoignez-nous