Frage

Gibt es eine Möglichkeit, die maximalen und minimalen definierten Werte eines Aufzählungs in C ++ zu finden?

War es hilfreich?

Lösung

Nein, es gibt keine Möglichkeit, die maximalen und minimalen Werte definiert jeder Enum in C ++ zu finden. Wenn diese Art von Informationen benötigt wird, ist es oft sinnvoll, eine Last und First-Wert zu definieren. Zum Beispiel:

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

Es muß nicht für jeden Wert zwischen First und Last angegebenen Werten werden.

Andere Tipps

Nein, nicht in Standard C ++. Man könnte es manuell tun:

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

num_values wird die Anzahl der Werte im Enum enthalten.

Nein. Ein Enum in C oder C ++ ist einfach eine Liste von Konstanten. Es gibt keine höhere Struktur, die solche Informationen halten würde.

Normalerweise, wenn ich brauche diese Art von Informationen, die ich in der Enum gehören ein Maximal- und Minimalwert etwas wie folgt aus:

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

Sehen Sie diese Web-Seite für einige Beispiele dafür, wie dies nützlich sein kann: Dumm Enum Tricks

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

nach Definition My_enum :: LAST_VALUE == N + 1

Nicht automatisch, aber Sie können künstliche ENUM-Werte hinzufügen, Min- und Max-Werte bedeuten, z.

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

Sie brauchen nicht einmal, was ich tue, ist nur sagen, dass ich zum Beispiel, wenn Sie:

enum Name{val0,val1,val2};

Wenn Sie switch-Anweisung haben und zu überprüfen, ob der letzte Wert erreicht wurde tun, wie folgt:

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

   //code
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top