enum und negative Werte
-
y-vonne schrieb:
Wieso ist das so. Dachte enum kann auch negative Zahlen aufnehmen.
Kann es auch, wenn
std::underlying_type<MeinEnum>::typeein vorzeichenbehafteter Skalar ist...
-
Ok. Und die Frage nun, wie kann ich ganz einfach prüfen ob ein Wert im enum vorhanden ist.
-
y-vonne schrieb:
Und die Frage nun, wie kann ich ganz einfach prüfen ob ein Wert im enum vorhanden ist.
Überleg dir was. Irgendwas eingebautes automatisches gibt es nicht.
-
OK
-
Bashar schrieb:
y-vonne schrieb:
Und die Frage nun, wie kann ich ganz einfach prüfen ob ein Wert im enum vorhanden ist.
Überleg dir was. Irgendwas eingebautes automatisches gibt es nicht.
Wenn Du den Enum selbst definierst, kannst Du Dir auch 'Markierungen' setzen:
enum MeinEnum { WertMEins = -1, WertEins = 1, WertZwei = 2, WertDrei = 3, Max, Min = WertMEins };Damit kannste ganz bequem schauen, ob ein Wert in [Min, Max) liegt. Wenn die Werte von MeinEnum allerdings Lücken aufweisen ist dieses Wissen leider nur halb so wertvoll.
Max kann dann darüberhinaus auch einen "ungültigen" Enum darstellen, á la:
MeinEnum me; ... if (me == Max) raise_invalid_mein_enum_error();
-
Zum Aspekt Sicherheit: In C++11 gibt es jetzt das hier:
enum class myEnum {...};Google "Strongly-typed Enumerations".
-
Hacker schrieb:
Zum Aspekt Sicherheit: In C++11 gibt es jetzt das hier:
enum class myEnum {...};Google "Strongly-typed Enumerations".
super - damit kann man jetzt natürlich gucken, ob ein wert ein äquivalent im enum hat. oh wait...
-
unskilled schrieb:
Hacker schrieb:
Zum Aspekt Sicherheit: In C++11 gibt es jetzt das hier:
enum class myEnum {...};Google "Strongly-typed Enumerations".
super - damit kann man jetzt natürlich gucken, ob ein wert ein äquivalent im enum hat. oh wait...
-.-
Damit kann ein Wert nicht mehr kein äquivalent im Enum haben (weißt du überhaupt, was das ist?), außer man macht explizite Casts (die ich so nie machen würde).
-
Hacker schrieb:
-.-
Damit kann ein Wert nicht mehr kein äquivalent im Enum haben (weißt du überhaupt, was das ist?), außer man macht explizite Casts (die ich so nie machen würde).Das ist zwar richtig, aber nicht unbedingt für die Problemstellung zielführend. Die Casts können sinnvoll sein, wenn man verschiedene Bitflags abbilden möchte. In diesem Fall kann man die Bitoperatoren für das enum implementieren, welche intern casten.
-
Hacker schrieb:
Damit kann ein Wert nicht mehr kein äquivalent im Enum haben (weißt du überhaupt, was das ist?), außer man macht explizite Casts (die ich so nie machen würde).
offenbar geht es dem TE darum - denn sonst bräuchte er diese information nicht. (und anwendungsgebiete gibt es da durchaus. z.bsp. alles, was mit serialisierung zu tun hat)
wie wärs, wenn du nur in threads postest, in denen du was von interesse posten könntest? mittlerweile mache ich jeden thread mit nem kommentar von dir einfach wieder zu - entweder, du sagst was unpassendes, was falsches oder versuchst irgendwie, deine falsche aussage schön zu reden, wenn es jmd angesprochen hat.