Le mappage des énumérations en chaînes est une exigence courante dans le développement C. L'article fourni précédemment se concentre sur ce problème et discute des solutions potentielles. L'auteur suggère initialement une méthode simple utilisant une instruction switch mais exprime des inquiétudes quant à leur nature de type C.
Une approche alternative consiste à utiliser un std::map
std::map<MyEnum, const char*> MyMap; map_init(MyMap) (eValue1, "A") (eValue2, "B") (eValue3, "C") ;
La classe map_init facilite le chaînage de Operator(), similaire à opérateur≪≪ sur std :: ostreams. La classe utilise un modèle map_init_helper pour fournir une interface conviviale permettant d'ajouter des entrées à n'importe quelle carte ou structure de type carte.
Voici l'implémentation de la classe map_init et de son assistant :
templatestruct map_init_helper { T& data; map_init_helper(T& d) : data(d) {} map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value) { data[key] = value; return *this; } }; template map_init_helper map_init(T& item) { return map_init_helper (item); } L'article mentionne également boost::assign comme bibliothèque existante offrant des fonctionnalités similaires. En utilisant une classe map ou map-init, les développeurs peuvent facilement convertir les valeurs d'énumération en chaînes correspondantes pour une lisibilité et une convivialité améliorées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!