Enum : Comment renvoyer la chaine de caractere???

Signaler
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010
-
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
-
salut a tous,

J'ai un petit soucis : coment faire pour retourner une chaine de caractere avec un enum?
exemple:

typedef enum{Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche}Jours;

j'aimerai pouvoir retourner Lundi si je lui dit Jours j=0;
et également dans l'autre sens si je lui di Jours j="Lundi" (et non Lundi)qu'il me retourne 0

savez-vous comment procéder???

Merci pour vos réponses.

PS:dans le programme réel c'est un enum de 45 éléments, je ne peu pas utiliser de switch car l'enum risque de varier avec le temps et dans le cahier des charge il n'y aura pas de recompilation de programme.

11 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Salut,


On peut considérés que les éléments d'un enum sont des entiers. Lundi,
Mardi... tout ça ce sont des identifiants, comme des indentifiants de
variable. Ce ne sont pas des chaînes, et les noms d'identifiants
disparraissent à la compilation.


Donc utilise peut être plutôt un tableau de chaînes.
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
je ne peu pas utiliser de switch car l'enum risque de varier avec le
temps et dans le cahier des charge il n'y aura pas de recompilation de
programme. => si tu modifier le enum tu va devoir aussi recompiler a chaque fois
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010

non pcq l'enum est présent dans un dll
de maniere a ne recompiler que la dll et mon programme utilise la dll

si je comprend bien ce n'est pas possible en C/C++ de convertir les valeur d'enum en char*

en fait c 'un peu plu compliquer car la Dll est en C/C++ (elle est creer a la suite d'un programe generer sur une carte electronique) et le programme qui l'utilise est en C#.

je ne peu donc pas toucher a cet enum.

je sais qu'en C# on peut convertir la valeur en chaine de caractere mais comment retourner un enum complet au programme???
Messages postés
25
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 septembre 2008

vous pouver travailler avec les operateurs !!!!!!
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010

quels opérateurs?
Messages postés
25
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 septembre 2008

par exemple:

Jours &operator=(Jours &J,char *S)
{
      if(strcmp(s,"Dimanche")==0)
            J=Dimanche;
      else if(strcmp(s,"Lundi")==0)
            J=Lundi;
      else .

      else
            J=Samedi;

return J;
}
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010

oui j'ai penser a faire cela
mais ceci est valable tant que l'enum ne change pas.
Messages postés
25
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 septembre 2008

il faut essayer pour le savoir
Messages postés
68
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
19 janvier 2010

mais ceci marche tres bien.
mais il faudra a chaque reprise de l'enum penser a modifier cette partie de code mais merci qd même de vous interresser a mon probleme.
Messages postés
25
Date d'inscription
lundi 20 mars 2006
Statut
Membre
Dernière intervention
27 septembre 2008

de rien
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
En encapsulant un enum dans une classe et avec un coup de macro par dessus, tu dois pouvoir faire ce que tu souhaites.