Разница между перечислением и классом перечисления?
Я недавно начал работать с управляемым кодом 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" больше подходит для управляемого кода?Заранее спасибо,
Гай
1 ответ:
Разница между неуправляемыми перечислениями и управляемыми перечислениями, которая делает управляемые перечисления более подходящими для управляемого кода, заключается в том, что управляемые перечисления являются управляемым кодом, а неуправляемые перечисления-неуправляемым кодом. Управляемые перечисления могут передаваться с помощью метаданных управляемого кода. Неуправляемые перечисления не могут, то есть они не могут проявляться как часть управляемого класса.