Domanda

Esiste un modo per trovare i valori massimi e minimi definiti di un enum in c ++?

È stato utile?

Soluzione

No, non c'è modo di trovare i valori massimi e minimi definiti di qualsiasi enum in C ++. Quando è necessario questo tipo di informazioni, è spesso buona norma definire un valore Ultimo e Primo. Ad esempio,

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

Non è necessario nominare i valori per ogni valore compreso tra First e Last .

Altri suggerimenti

No, non in C ++ standard. Puoi farlo manualmente:

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

num_values ?? conterrà il numero di valori nell'enum.

No. Un enum in C o C ++ è semplicemente un elenco di costanti. Non esiste una struttura superiore in grado di contenere tali informazioni.

Di solito quando ho bisogno di questo tipo di informazioni includo nell'enum un valore massimo e minimo qualcosa del genere:

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

Vedi questa pagina web per alcuni esempi di come questo può essere utile: Trucchi Enum stupidi

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

dopo la definizione, My_enum :: LAST_VALUE == N + 1

Non automaticamente, ma puoi aggiungere valori enum artificiali per indicare i valori minimo e massimo, ad es.

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

non hai nemmeno bisogno di loro, quello che faccio è solo che dico per esempio se hai:

enum Name{val0,val1,val2};

se si dispone dell'istruzione switch e per verificare se è stato raggiunto l'ultimo valore, procedere come segue:

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

   //code
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top