Truc bête : nb d'éléments d'un enum [C++] - C++ - Programmation
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 !?
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.
Marsh Posté le 27-05-2002 à 12:39:42
Code :
|
NB_VAL = nombre de valeurs dans ton enum
Marsh Posté le 27-05-2002 à 14:36:50
Oui évidemment merci.
HelloWorld a écrit a écrit :
|
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]
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é !
Marsh Posté le 27-05-2002 à 22:22:51
el_gringo a écrit a écrit : ...J'crois qu'y s'en serait douté ! |
une mise au point n'est jamais de trop
LeGreg
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 :
|
tu mets pas de = ou c un oublie !? (parce que moi j'en met, et ça fonctionne très bien !)
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
Marsh Posté le 03-03-2003 à 08:47:52
ton enum est membre d'une classe donc il faut le traiter comme tel :
Code :
|
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.
Marsh Posté le 23-03-2003 à 02:34:49
HelloWorld a écrit :
|
Et tu fais bien de préciser "valeur":
Code :
|
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...
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é
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é ?