Разница между enum и enum классом?

Я недавно начал работать с управляемым кодом C ++ / CLI, но я всегда определял перечисления следующим образом:

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

До сегодняшнего дня, когда я получил сообщение об ошибке:

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

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

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

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

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

Заранее спасибо,

парень

6

Решение

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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]