Os valores máximo e mínimo em um C ++ enum
Pergunta
Existe uma maneira de encontrar os valores máximo e mínimo definido de um enum em c ++?
Solução
Não, não há nenhuma maneira de encontrar os valores definidos máximos e mínimos de qualquer enum em C ++. Quando é necessário este tipo de informação, muitas vezes é uma boa prática para definir um último e valor. Por exemplo,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
Há não precisa ser nomeado valores para cada valor entre First
e Last
.
Outras dicas
Não, não em C ++ padrão. Você poderia fazê-lo manualmente:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values
conterá o número de valores na enumeração.
No. Um enum em C ou C ++ é simplesmente uma lista de constantes. Não existe uma estrutura maior que iria realizar tais informações.
Normalmente, quando eu preciso este tipo de informação eu incluo na enumeração um máximo e valor mínimo algo como isto:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
Veja esta página web para alguns exemplos de como isso pode ser útil: Tricks Enumerar estúpidas
enum My_enum
{
FIRST_VALUE = 0,
MY_VALUE1,
MY_VALUE2,
...
MY_VALUEN,
LAST_VALUE
};
após definição, My_enum :: LAST_VALUE == N + 1
Não automaticamente, mas você pode adicionar valores enum artificiais para significar mínimo e máximo de valores, por exemplo.
typedef enum {start_of_colors=-1, eRed, eWhite, eBlue, eGray,
end_of_colors} eListOfTags;
for (eListOfTags i = start_of_colors+1; i < end_of_colors; i++) {
....
}
você nem precisa deles, o que eu faço é apenas digo por exemplo, se você tem:
enum Name{val0,val1,val2};
Se você tem instrução switch e para verificar se o último valor foi alcançado fazer como o seguinte:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}