Transformation string - type énuméré

Signaler
Messages postés
31
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
22 avril 2011
-
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
Bonjour,

je travaille actuellement sur un projet en C/C++ ou je dois faire plusieurs la même manipulation à savoir à partir d'une "std::string" trouver l'équivalent dans une énumération définie au préalable.
Par exemple : j'ai un type énuméré color{RED =0, BLUE=1} et à partir de celui-ci, je récupère la valeur "RED" à partir d'une "std::string", résultat d'une autre fonction, qui vaut "RED".
Étant donné que je fais cette manipulation souvent avec différentes énumérations, je voudrais savoir si quelqu'un aurait une idée pour faire cette "transformation" à l'aide d'une fonction générique quel que soit le type énuméré.
Merci pour vos réponses.

2 réponses

Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Non, ce n'est pas possible.
La seule solution actuelle est de passer par plein de macro et de définir ton enum à l'aide de macros bien compliquées...

Un excellent article sur le sujet:
http://www.codeproject.com/KB/cpp/C___enums_to_strings.aspx

________________________________________________________________________
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
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Un autre lien excellent (mais un peu plus avancé):
http://www.codeproject.com/KB/cpp/ImprovedEnum.aspx

________________________________________________________________________
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