enum int zuweisen
-
Hi Leute,
ich habe mal wieder eine Frage:
Ist es möglich einem enum einen int-Wert zuzuweisen.
Also:enum zahlen {eins=1,zwei=2,drei=3} int i = 2; zahlen Zahl1; Zahl1 = i;
Hoffe ihr könnt mir helfen
mfg
kaffee
-
Hallo,
Ja, das ist möglich. Da wird implizit konvertiert. Der Compiler sollte dir dann aber eine Warnung geben. Die kann man mit einem static-cast abstellen.
enum zahlen {eins=1,zwei=2,drei=3} int i = 2; zahlen Zahl1; Zahl1 = static_cast<zahlen>(i);
-
gehen tut das. du musst den cast nur explizit schreiben, also bspw mittels
Zahl1= (zahlen)i;
das problem ist nur: das, was dabei rauskommt, ist nicht definiert.
@Braunstein mein compiler warnt mich da nicht.
-
Ok funktioniert, danke
-
@ghorst
Ob dein Compiler dich warnt oder nicht hängt von deinen Warneinstellungen ab. Er sollte aber. Meiner macht das (beim BCB Warnung 8018 'Typ' wird enum zugewiesen).
-
er sollte nicht warnen, sondern die zuweisung irgendein_enum = int; schlicht mit einem fehler quittieren, da dieses verhalten nicht definiert ist. der gcc warnt daher auch nicht, sondern lässt es schlicht nicht zu. der msvc verhält sich laut msdn eintrag auch so.
-
Tja, da scheint mein Compiler nicht ganz standardkonform zu sein.
-
Braunstein schrieb:
Tja, da scheint mein Compiler nicht ganz standardkonform zu sein.
Oder du verwendest einen C-Compiler (in C war die Zuweisung int -> enum legal, in C++ braucht's die explizite Konvertierung)
-
Ich verwende BCB5 bis BCB2007. Da sind das nur Warnungen aber keine Fehler.