Разница между 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
};

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

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

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

парень

1 ответов


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