Pergunta

Existe uma maneira de encontrar os valores máximo e mínimo definido de um enum em c ++?

Foi útil?

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
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top