Enum: nächsten Wert
-
Hi
Wie kann ich ein enum um eins erhöhen?
enum Foo { EINS = 1, ZWEI = 2 }; //.. Foo aFoo = EINS; aFoo++; // Geht nicht aFoo += 1; // auch nicht
Danke im voraus.
-
hm...kann das grad schlecht ausprobieren, aber müsste nicht
aFoo = Foo((int(aFoo) + 1)
funktionieren?
-
Schlechte Variante: static_cast
Gute Variante: Operatoren überladen
-
Operator überladen geht für enums?
Wusst ich nicht.
-
naja notfalls geht sowas schon:
#include <iostream> enum test { T_ONE = 1, T_TWO, T_TREE }; int main() { test test_item = T_ONE; std::cout << test_item << std::endl; test_item = static_cast<test>(test_item + 1); std::cout << test_item << std::endl; }
-
Enumerator Inkrementator schrieb:
Operator überladen geht für enums?
Wusst ich nicht.enums sind UDTs, also ist das möglich.
enum test { T_ONE = 1, T_TWO, T_TREE }; test& operator++(test& x) { return x = x == T_TREE ? T_ONE : test( x + 1 ); }; test operator++(test& x, int) { test y = x; ++x; return y; } test& operator--(test& x) { return x = x == T_ONE ? T_THREE : test( x - 1 ); }; test operator--(test& x, int) { test y = x; --x; return y; }
usw.