Un truc bête : comment récupérer le nombre d'éléments dans un type énuméré ?
Publicité
Posté le 27-05-2002 à 10:52:38
El_gringo
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 !?
Willyzekid
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!!
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]
El_gringo
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é !
LeGreg
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
El_gringo
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 :
enum toto{
totonull 0,
toto1 1,
toto2 2,
toto3 4,
etc..};
tu mets pas de = ou c un oublie !? (parce que moi j'en met, et ça fonctionne très bien !)
Publicité
Posté le 28-05-2002 à 08:50:48
LeGreg
Posté le 28-05-2002 à 09:35:56
oops oui c'est un oubli (on va dire ca )
polo021
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
chrisbk
-
Posté le 03-03-2003 à 08:47:52
ton enum est membre d'une classe donc il faut le traiter comme tel :
Code :
switch(obj1.toto)
{
case classe1::toto1:
printf ("toto1" );
...
El_gringo
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.
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