[C++] Un enum de string ?

Résolu
Mandras
Messages postés
10
Date d'inscription
dimanche 9 novembre 2008
Statut
Membre
Dernière intervention
1 novembre 2015
- 21 juil. 2013 à 22:36
CptPingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
- 22 juil. 2013 à 10:52
Bonjour,

Voila, un probleme assez simple de comprehension mais j'admet etre carrement bloque !

J'ai un enum qui possede de nombreuses lignes, voila un exemple :

enum {SIG1, SIG2, SIG3, ...};


Jusque la ok !

Sauf que, chaque ligne de cet enum determine en fait un signal client / server (donc tres important)
Et il y a une bonne cinquantaine de signaux differents.

Maintenant j'aimerai loguer ces signaux (donc ecriture dans un fichier de log)

Vous admettrez que, je ne peu pas loguer :
receive signal: 21

Il est preferable de loguer par exemple :
receive signal: SIG1


( Bon certe SIG1 c'est pas plus parlant mais la c'est un exemple )

Alors voila, la question est simple : COMMENT FAIRE ?

Sachant que je veu un truc propre, si possible avec une seule instantiation ... par exemple :

enum {
  SIG1 = "SIG1",
  SIG2 = "SIG2",
  SIG3 = "SIG3",
  ...
};


Mais bien-sur ce type d'enum n'existe pas.


J'ai regarde du cote d'un map et ca va pas pour 2 raisons :

1 - Obliger d' instancier l'enum et la map separement (donc tres laid pour 50+ signaux) :

enum {SIG1, SIG2, SIG3, ...};

map[SIG1] = "SIG1";
map[SIG2] = "SIG2";
...


2 - Doit etre fais dans une fonction ... hors, je souhaiterai l'instantier (ou plutot le definir) dans un fichier header (.hpp) !

Voila !

Si vous avez la reponse je vous remercie d'avance ... car je suis totalement bloque et je commence a saturer sur ce probleme la !

PS : pardonnez le manque total d'accent, je suis sur un clavier USA.
PPS : Si vous avez la solution pour un char * au lieu d'une string je suis preneur


Merci d'avance

2 réponses

Utilisateur anonyme
22 juil. 2013 à 09:09
Hello,
Je ne pense pas que tu puisses faire autrement qu'avoir un enum et une map (ou autre collection). Par contre, tu n'es pas obligé "d'utiliser une fonction", tu peux très bien l'initialiser de manière statique, toutes les données étant connues au compil time


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0