Existe-t-il un moyen de trouver les valeurs maximales et minimales définies d'un enum en c++ ?
Toujours utile pour les enums non séquentiels - tant que vous ne vous attendez pas à ce que chaque valeur existe.
Existe-t-il un moyen de trouver les valeurs maximales et minimales définies d'un enum en c++ ?
Non, il n'existe aucun moyen de trouver les valeurs maximales et minimales définies d'un enum en C++. Lorsque ce type d'information est nécessaire, il est souvent bon de définir une valeur Last et First. Par exemple,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
Il n'est pas nécessaire d'avoir des valeurs nommées pour chaque valeur entre First
y Last
.
Toujours utile pour les enums non séquentiels - tant que vous ne vous attendez pas à ce que chaque valeur existe.
@Adrian : Oui, c'est vrai. Il n'est pas nécessaire que chaque valeur ait un nom défini pour que cette technique soit utile. Je vais modifier en conséquence
@lizusek : num_values
contiendra le nombre de valeurs de l'énumération, à l'exception de num_values
lui-même.
@dalie oui, c'est pourquoi ce sera : nombre de valeurs - 1. Bien sûr, je sais que vous voulez dire une valeur qui signifie les valeurs à l'exception de la dernière qui n'est pas une valeur réelle, mais une aide. Cependant, je suggère de rendre les choses plus claires.
Non. Un enum en C ou C++ est simplement une liste de constantes. Il n'existe pas de structure supérieure qui puisse contenir de telles informations.
Habituellement, lorsque j'ai besoin de ce type d'information, j'inclus dans l'enum une valeur maximale et minimale, comme ceci :
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
Voir cette page web pour quelques exemples de l'utilité de ce système : Trucs stupides d'Enum
Vous n'en avez même pas besoin, ce que je fais c'est juste que je dis par exemple si vous avez :
enum Name{val0,val1,val2};
si vous avez une instruction switch et que vous voulez vérifier si la dernière valeur a été atteinte, faites comme suit :
if(selectedOption>=val0 && selectedOption<=val2){
//code
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Jetez un coup d'œil à la github.com/Neargye/magic_enum lib
3 votes
Une raison pour laquelle je pourrais vouloir connaître la valeur maximale d'une énumération sans l'ajouter à l'énumération elle-même est que mon compilateur ne se plaint pas (C4061) lorsque mon instruction 'switch' ne gère pas explicitement la valeur 'max value'.