bonjour tous le monde
est ce qu'il est possible de tester si une valeur appartient à un type enumeratif ?
bonjour tous le monde
est ce qu'il est possible de tester si une valeur appartient à un type enumeratif ?
personnellement je connais la fonction isnan (is not a numbre) :
http://www.linux-france.org/article/man-fr/man3/isnan-3.html
Je sais pas si ca t'aide mais bon !
merci,mais je veux dire par type numerique par exemple ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 enum typ { lundi,mardi,mercredi };
C'est donc pas un type numerique mais ENUMERE
Donc dans ce cas la je ne peux t'aider desole
Généralement on ne peut pas le faire. Cependant ce qu'on peut faire est le suivant:
Mais cela ne marche seulement si to ne donne pas de valeurs numérique toi-même au valeurs énumérées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 enum Foo { min, a,b,c,d,e,f,g, max; }; bool isfoo(Foo foo) { return min<foo && foo<max; }
Si tu peux ...
Va voir http://www.developpez.net/forums/viewtopic.php?t=317466
Là je ne vois pas vraiment ce que tu veux dire... Dans le lien que tu a posté tu ne montre pas vraiment comment on peut dire si une valeur appartient à un type énuméré ou non. Bon on peut bien sûr toujours la comparée à chaque valeurs du type mais je suis qu'ici une solution un peu plus flexible est demandée.
Cela n'a pas de sens.
Avec
toto est dans l'énuméré et tata n'y est pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part enum { toto, titi };
Tout cela est résolu à la compilation.
Il faudrait que tu sois plus explicite par rapport ton problème exact.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
bonjour,j'ai plusieurs valeurs dans la type enumeratif et donc je ne veux pas tester si une valeur appartient pour tous les valeurs
est ce qu'il y aune methode plus simple?
Salut,
je pense que il ou elle veut savoir si par exemple "tata" fait parti de l'énumération :
Son problème me fait penser aux tables de hashage qui assignent à une clé une valeur (cf. les map).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // dans ce cas non enum { toto, titi }; // dans ce cas oui enum { toto, titi, tata };
Mais ça n'a rien a voir avec les enum.
A+.
Flo.
ce post part dans tous les sens... explique plus clairement ton problème, avec du code, si possible.
autrement
verifie que x appartient au vecteur v
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::binary_search(v.begin(),v.end(),x);
au lieu du vecteur v j'ai
enum typ
{
a,b,c,d
};
et je veux tester que x appartient à typ
tu as donc une valeur numérique et tu veux savoir si cette valeur est une des valeur défini dans ton enum sans utiliser les identifiants de l'enumérateur ?
ex :comment faire pour savoir si "test" est défini dans l'enum ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 enum UnEnum { a, b, c, d }; int test = 4;
eh bien, à moins d'utiliser les Min/Max comme l'a montré ben04, je ne vois pas... de toute façon, ce n'est pas très propre : ce ne sont pas les mêmes types.
Juste pour le fun, et pour les fans du préprocesseur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #define ENUM_BODY(name, value) \ name = value, #define ENUM_CASE(name, value) \ case name : return true; #define DEFINE_ENUM(name, values) \ enum name { \ values(ENUM_BODY) \ }; \ inline bool value_in_##name(int x) \ { \ switch (x) { \ values(ENUM_CASE) \ default : return false; \ } \ }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #define VALUES(_) \ _(a, 1) \ _(b, 3) \ _(c, 5) \ _(d, 24) DEFINE_ENUM(MyEnum, VALUES) int main() { cout << "1 : " << boolalpha << value_in_MyEnum(1) << endl; cout << "2 : " << boolalpha << value_in_MyEnum(2) << endl; cout << "5 : " << boolalpha << value_in_MyEnum(5) << endl; return 0; }
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
C'est pour afficher "true" ou "false" au lieu de "1" ou "0".Envoyé par Flo.
...chose que tu aurais pu trouver simplement en essayant, ou avec Google .
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
merci mais quand j'ai compile il me fait sortir des erreurs
je ne sais pas trop sur le preprocesseur
Il y avait un "\" de trop dans mon code. A part ça, ce serait mieux si tu nous donnait ces erreurs, on ne peut pas les deviner.
J'ai donné ce code pour le fun, personnellement je ne sais pas si j'utiliserais ce genre de mécanisme. Enfin à toi de voir.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
voici les erreurs
vous avez ditmain2.cpp
main2.cpp(11) : error C2501: 'name' : missing storage-class or type specifiers
main2.cpp(11) : error C2065: 'value' : undeclared identifier
main2.cpp(14) : error C2059: syntax error : 'case'
main2.cpp(14) : error C2059: syntax error : 'return'
main2.cpp(17) : error C2017: illegal escape sequence
main2.cpp(18) : error C2143: syntax error : missing '}' before '('
main2.cpp(18) : fatal error C1903: unable to recover from previous error(s); stopping compilation
---------------------- Done ----------------------
Build: 0 succeeded, 1 failed, 0 skipped
lequelle ?Il y avait un "\" de trop dans mon code. A part ça, ce serait mieux si tu nous donnait ces erreurs, on ne peut pas les deviner
J'ai corrigé le code dans mon post précédent.
Tes erreurs semblent venir de plus haut, tu es sûr d'avoir bien repris le code ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager