Bonjour à tous
Me revoici avec un question bizarre de métaprogrammation.
Pensez vous qu'il soit possible de parcourir un enum par le compilateur.
Ex: je souhaiterai connaitre la somme des éléments d'un enum.
Merci Mathieu
Bonjour à tous
Me revoici avec un question bizarre de métaprogrammation.
Pensez vous qu'il soit possible de parcourir un enum par le compilateur.
Ex: je souhaiterai connaitre la somme des éléments d'un enum.
Merci Mathieu
Les enum se suivent non ?
Donc pas besoin de compilo.
Juste une formule avec les suites !
p= le nombre du debut des enum
n= le dernier nombre a la fin de l'enum
((n-p+1)*(n+p))/2 = la somme des nombres
![]()
Oui mais j insiste pour que le compilateur fasse cette opération
je prends comme enum
je souhaiterai également connaitre le cardinal de TYPE, la valeur du second élément. Tout ca par le compilateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 typedef enum{a=0,b=3,c=4} TYPE;
Mathieu
Jette un œil là-dessus.
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Bon, il manque des choses, mais ça te fait une piste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class MyEnum { enum {a, b, c} pouet; static std::vector<pouet> foo; }; MyEnum::foo(a) = 0; MyEnum::foo(b) = 3; MyEnum::foo(c) = 4; size_t nbre_enum = MyEnum.foo.size();
Pas trop le temps de fournir une solution complète. :-)
Alors disons le autrement.
Je considèe un enum que je ne peux altérer
Comment connaitre son cardinal A LA COMPILATION, par exemple?
Merci
en effet il se peut qu'il n'y ait pas de réponse en C++
Si tu n'affectes pas de valeurs aux éléments de ton énum, tu peux faire:
La dernière valeur de l'enum est son "cardinal", c'est à dire le nb d'éléments qui la précède. C'est assez pratique, si tu insères une valeur au milieu, le compilateur renumérote, et tout fonctionne encore.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 enum {v1,v2,v3,nbval};
Francois
[FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.
Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.
Partager