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