2013-06-17 3 views
6

Я недавно начал работать С ++/CLI управляемый код, но я всегда определяется перечислений следующим образом:Разница между enum и enum class?

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

До сегодня, когда я был поражен с сообщением об ошибке:

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

Как указывается в сообщении, и на различных Stack вопросы переполнения, изменяя мой код:

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

быстро исправили проблему.

Однако я все еще не знаю различий между двумя разными способами, которые я теперь знаю, чтобы определить перечисления. Может ли кто-нибудь помочь прояснить меня? А также что делает класс «enum class» более подходящим для управляемого кода?

Спасибо заранее,

Guy

+2

@juanchopanza Нет! C++/CLI не является C++ 11. –

+0

@ R.MartinhoFernandes Тег C++ по этим вопросам всегда меня бросает. – juanchopanza

ответ

4

Разница между неуправляемыми перечислениями и сумели перечисления, что делает управляемые перечислений более становятся для управляемого кода, что управляемые перечислений управляются код и неуправляемые перечисления являются неуправляемым кодом. Управляемые перечисления могут передаваться метаданными управляемого кода. Неуправляемые перечисления не могут, что означает, что они не могут проявляться как часть управляемого класса.

+0

Окей после редактирования на это я их больше понимаю. –

+3

Идите домой, ваши контуры жареные. – Xeo

+0

@GuyJoelMcLean - вы прочитали его до конца? :) –