Pregunta

¿Hay una manera de encontrar los valores máximos y mínimos definidos de una enumeración en c ++?

¿Fue útil?

Solución

No, no hay manera de encontrar los valores máximos y mínimos definidos de cualquier enumeración en C ++. Cuando se necesita este tipo de información, a menudo es una buena práctica definir un valor Último y Primero. Por ejemplo,

enum MyPretendEnum
{
   Apples,
   Oranges,
   Pears,
   Bananas,
   First = Apples,
   Last = Bananas
};

No es necesario que haya valores con nombre para cada valor entre First y Last .

Otros consejos

No, no en C ++ estándar. Podrías hacerlo manualmente:

enum Name
{
   val0,
   val1,
   val2,
   num_values
};

num_values ?? contendrá el número de valores en la enumeración.

No. Una enumeración en C o C ++ es simplemente una lista de constantes. No hay una estructura superior que pueda contener dicha información.

Generalmente cuando necesito este tipo de información, incluyo en la enumeración un valor máximo y mínimo, algo como esto:

enum {
  eAaa = 1,
  eBbb,
  eCccc,
  eMin = eAaaa,
  eMax = eCccc
}

Consulte esta página web para ver algunos ejemplos de cómo esto puede ser útil: Stupid Enum Tricks

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

después de la definición, My_enum :: LAST_VALUE == N + 1

No automáticamente, pero puede agregar valores de enumeración artificial para indicar los valores máximo y mínimo, por ejemplo,

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++) {
.... 
}

ni siquiera los necesitas, lo que hago es solo decir, por ejemplo, si tienes:

enum Name{val0,val1,val2};

si tiene una instrucción de cambio y para verificar si se alcanzó el último valor, haga lo siguiente:

if(selectedOption>=val0 && selectedOption<=val2){

   //code
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top