Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1572 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°145277
Drums
Posté le 27-05-2002 à 10:52:38  profilanswer
 

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

mood
Publicité
Posté le 27-05-2002 à 10:52:38  profilanswer
 

n°145282
El_gringo
Posté le 27-05-2002 à 11:01:22  profilanswer
 

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

n°145292
Willyzekid
Posté le 27-05-2002 à 11:10:48  profilanswer
 

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!!
n°145300
Drums
Posté le 27-05-2002 à 11:14:58  profilanswer
 

Ouaip je m'en doutais, merci.

n°145380
HelloWorld
Salut tout le monde!
Posté le 27-05-2002 à 12:39:42  profilanswer
 

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
n°145470
Drums
Posté le 27-05-2002 à 14:36:50  profilanswer
 

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  



n°145572
LeGreg
Posté le 27-05-2002 à 16:45:12  profilanswer
 

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]

n°145625
El_gringo
Posté le 27-05-2002 à 17:37:39  profilanswer
 

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

n°145760
LeGreg
Posté le 27-05-2002 à 22:22:51  profilanswer
 

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

n°145855
El_gringo
Posté le 28-05-2002 à 08:50:48  profilanswer
 

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 !)

mood
Publicité
Posté le 28-05-2002 à 08:50:48  profilanswer
 

n°145872
LeGreg
Posté le 28-05-2002 à 09:35:56  profilanswer
 

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

n°321385
polo021
Posté le 03-03-2003 à 08:26:48  profilanswer
 

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
 

n°321388
chrisbk
-
Posté le 03-03-2003 à 08:47:52  profilanswer
 

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. ...


 

n°321390
El_gringo
Posté le 03-03-2003 à 08:48:30  profilanswer
 

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.

n°321399
polo021
Posté le 03-03-2003 à 09:12:45  profilanswer
 

oui c juste. Merci bcp.

n°340650
Musaran
Cerveaulté
Posté le 23-03-2003 à 02:34:49  profilanswer
 

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
n°340713
Taz
bisounours-codeur
Posté le 23-03-2003 à 13:03:54  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
[question bete] fichier JS à partPetit truc tout bête en Pascal sous Delphi...(Socket de connection...)
[BASIC] Truc bizarre avec les tables ...compter les occurences de chaque elements
[] [base de données] truc de ouf à faire ... arborescence virtuelleretourner à la ligne dans une formulaire /!\Encore un tit truc svp
un ptit truc tout con en PHPHTML Préciser une frame cible (target) dans un bête href
remplir un truc sous vb et l'ecrire dans excel !!!! 
Plus de sujets relatifs à : [C++] Truc bête : nb d'éléments d'un enum


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR