Ich habe einen typisierten EnumC++ 11 Casting Aufzählungen zu Ints
enum side : int {_white=0,
_yellow=1,
_green=2,
_blue=3,
_red=4,
_orange=5};
jedoch gcc-5 verwendet, die Compiler sagt es nicht static_cast im folgende Szenario verwenden kann:
side value
function(static_cast<int *>(&value))
Warum ist das? Doing static_cast<int>(value))
verursacht keinen Fehler.
verschiedene Typen, sollten Sie 'reinterpret_cast' nicht verwenden? –
Sie können ein Bool in ein Double konvertieren, aber das bedeutet nicht, dass ein Bool Pointer sinnvollerweise als Double Pointer behandelt werden kann. –
Ich dachte, eine typisierte enum war im Wesentlichen der gleiche Datentyp? Da es als 'int' eingegeben wurde, sollte der Compiler das akzeptieren können 'static_cast' no? Offensichtlich funktioniert 'reininterpret_cast', aber es ist ein bisschen wie ein Code-Geruch. –