[C++] Truc bête : nb d'éléments d'un enum

Truc bête : nb d'éléments d'un enum [C++] - C++ - Programmation

Marsh Posté le 27-05-2002 à 10:52:38    

Un truc bête : comment récupérer le nombre d'éléments dans un type énuméré ?

Reply

Marsh Posté le 27-05-2002 à 10:52:38   

Reply

Marsh Posté le 27-05-2002 à 11:01:22    

J'pense pas que tu puisses. un enum, c juste des entiers en fait.
ça te servirai à quoi !?

Reply

Marsh Posté le 27-05-2002 à 11:10:48    

drums a écrit a écrit :

Un truc bête : comment récupérer le nombre d'éléments dans un type énuméré ?  




 
ouais je pense pas que tu puisse.
L'implémentation des types énumérés en C++ est complétement batarde! Elle est juste là pour remplacer les define autant que possible.
 
Cela dit, si tu garde la définition des valeurs de l'énumération par défaut, la valeur du dernier élément te donne le nombre total d'élément. Les attributs en Ada ne fonctionnent pas autrement.


---------------
Horizon pas Net, reste à la buvette!!
Reply

Marsh Posté le 27-05-2002 à 11:14:58    

Ouaip je m'en doutais, merci.

Reply

Marsh Posté le 27-05-2002 à 12:39:42    

Code :
  1. enum
  2. {
  3.     VAL1,
  4.     VAL2,
  5.     VAL3,
  6.     VAL4,
  7.     VAL5,
  8.     NB_VAL   
  9. }test;


 
NB_VAL = nombre de valeurs dans ton enum


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 27-05-2002 à 14:36:50    

Oui évidemment merci.
 

HelloWorld a écrit a écrit :

Code :
  1. enum
  2. {
  3.     VAL1,
  4.     VAL2,
  5.     VAL3,
  6.     VAL4,
  7.     VAL5,
  8.     NB_VAL   
  9. }test;


 
NB_VAL = nombre de valeurs dans ton enum  



Reply

Marsh Posté le 27-05-2002 à 16:45:12    

sauf si tu définis tes enums a la main
genre  
enum toto{
  totonull = 0,
  toto1 = 1,
  toto2 = 2,
  toto3 = 4,
  etc..};
 
LeGreg
 
edit: petite correction :)

 

[jfdsdjhfuetppo]--Message édité par legreg le 28-05-2002 à 09:36:46--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 27-05-2002 à 17:37:39    

legreg a écrit a écrit :

sauf si tu définis tes enums a la main
genre  
enum toto{
  totonull 0,
  toto1 1,
  toto2 2,
  toto3 4,
  etc..};
 
LeGreg  




 
...J'crois qu'y s'en serait douté ! :D

Reply

Marsh Posté le 27-05-2002 à 22:22:51    

el_gringo a écrit a écrit :

 
 
...J'crois qu'y s'en serait douté ! :D  




 
une mise au point n'est jamais de trop ;)
 
LeGreg

Reply

Marsh Posté le 28-05-2002 à 08:50:48    

legreg a écrit a écrit :

 
 
une mise au point n'est jamais de trop ;)
 
LeGreg  




 
Et puis ça permet de préciser qu'on peut fixer les valeurs des entier dans un enum.
C pas de trop non plus, c vrai.
Ms d'ailleur, pour fixer les valeurs tu fais comment ça toi !?

Code :
  1. enum toto{
  2. totonull 0,
  3. toto1 1,
  4. toto2 2,
  5. toto3 4,
  6. etc..};


 
tu mets pas de = ou c un oublie !? (parce que moi j'en met, et ça fonctionne très bien !)

Reply

Marsh Posté le 28-05-2002 à 08:50:48   

Reply

Marsh Posté le 28-05-2002 à 09:35:56    

oops oui c'est un oubli (on va dire ca :D )

Reply

Marsh Posté le 03-03-2003 à 08:26:48    

et comment on fait pour faire un switch sur un enum?
 
Parce que :
 
class classe1  
{
enum toto
 {
  toto1,
  toto2,
  toto3,
 };
//suite
}
 
class classe2
{
classe1 obj1;
 
switch(obj1.toto)
{
 case toto1:
         printf ("toto1" );
  break;
 case toto2:
  printf ("toto2" );
  break;
        case toto3:
                printf ("toto3" );
  break;
}
}
 
Et a la compilation ca donne :  
error C2065: 'toto1' : undeclared identifier
 

Reply

Marsh Posté le 03-03-2003 à 08:47:52    

ton enum est membre d'une classe donc il faut le traiter comme tel :
 
 

Code :
  1. switch(obj1.toto)
  2. {
  3. case classe1::toto1:
  4.         printf ("toto1" );
  5. ...


 

Reply

Marsh Posté le 03-03-2003 à 08:48:30    

Oula, 'faut pas confondre : toto, c'est un type, c'est pas un attribut de classe.
Ensuite, l'énum appartient à ta classe, je dirais que pour l'utiliser dans une classe autre, il faut préfixer "toto1" par "Classe1::", enfin, il me semble.

Reply

Marsh Posté le 03-03-2003 à 09:12:45    

oui c juste. Merci bcp.

Reply

Marsh Posté le 23-03-2003 à 02:34:49    

HelloWorld a écrit :

Code :
  1. enum
  2. {
  3.     VAL1,
  4.     VAL2,
  5.     VAL3,
  6.     VAL4,
  7.     VAL5,
  8.     NB_VAL   
  9. }test;


NB_VAL = nombre de valeurs dans ton enum


Et tu fais bien de préciser "valeur":

Code :
  1. enum test{
  2. name1,
  3. name2,
  4. name3,
  5. namebis= 2,
  6. NB_VAL
  7. };

4 noms, dont 2 pour la même valeur...
 
Mon principal regret sur les énumérations C++, c'est qu'on ne peut pas en dériver comme d'une classe.
Pour fournir une méthode 'suivant' par exemple...


Message édité par Musaran le 23-03-2003 à 02:46:29

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 23-03-2003 à 13:03:54    

moi j'utilise aussi des safe-enum comme on fait en Java, c'est peu plus élaboré, mais tres facile à implémenté

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed