2013-06-17 18 views
6

Recentemente ho iniziato a lavorare al C++/CLI codice gestito, ma ho sempre definito enumerazioni in questo modo:La differenza tra enum ed enum class?

enum FV_MODE 
{ 
    IDLE,DRAG,ADD_HITBOX,ADD_HURTBOX 
}; 

Fino ad oggi, quando sono stato colpito con il messaggio di errore:

cannot define an unmanaged enum 'FViewer::FV_MODE' inside managed 'FViewer' 
1>   use 'enum class' 

Come suggerito nel messaggio e su varie questioni stack overflow, cambiando il mio codice per:

enum class FV_MODE 
{ 
    IDLE,DRAG,ADD_HITBOX,ADD_HURTBOX 
}; 

risolto rapidamente il problema.

Tuttavia, sono ancora inconsapevole delle differenze tra i 2 modi diversi che ora conosco per definire le enumerazioni. Qualcuno potrebbe aiutare a chiarire per me? E anche cosa rende la "enum class" più adatta al codice gestito?

Grazie in anticipo,

Guy

+2

@juanchopanza No! C++/CLI non è C++ 11. –

+0

@ R.MartinhoFernandes Il tag C++ su queste domande mi getta sempre. – juanchopanza

risposta

4

La differenza tra le enumerazioni non gestiti e gestito enumerazioni che rende gestite enumerazioni più diventando per il codice gestito è che enumerazioni gestite sono gestiti codice e le enumerazioni non gestiti sono il codice non gestito. Le enumerazioni gestite possono essere comunicate dai metadati del codice gestito. Le enumerazioni non gestite non possono, nel senso che non possono manifestarsi come parte di una classe gestita.

+0

Okay dopo la modifica di questo li capisco di più. –

+3

Vai a casa, i tuoi circuiti sono fritti. – Xeo

+0

@GuyJoelMcLean - l'hai letto fino alla fine? :) –