Max und Min-Werte in einem C ++ Enum
Frage
Gibt es eine Möglichkeit, die maximalen und minimalen definierten Werte eines Aufzählungs in C ++ zu finden?
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
}