c++ - enum 和 enum class 的区别?

标签 c++ enums c++-cli enum-class

我最近开始使用 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'

按照消息和各种 Stack Overflow 问题中的建议,将我的代码更改为:

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

很快解决了问题。

但是,我仍然不知道我现在知道的两种定义枚举的不同方法之间的区别。有人可以帮我澄清一下吗?还有是什么让“枚举类”更适合托管代码?

提前致谢

家伙

最佳答案

使托管枚举更适合托管代码的非托管枚举和托管枚举之间的区别在于,托管枚举是托管代码,而非托管枚举是非托管代码。托管枚举可以通过托管代码元数据进行通信。非托管枚举不能,这意味着它们可能不会显示为托管类的一部分。

关于c++ - enum 和 enum class 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17145627/

相关文章:

python - 如何使用枚举键访问和打印类的成员?

c - 何时(不)使用 equal 创建枚举?

c++ - [Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] 的 C++/CLI 版本是什么?

c++ - 使用 Eclipse CDT 在构造函数中未初始化的输出不正确和变量

c++ - 二维数组重载

C++11 简单正则表达式不适用于 gcc 4.9.1

c++ - 在 XPlane 窗口之上强制 Qt 窗口

c# - 枚举的意外行为

visual-studio-2010 - 视觉C++ 2010 : Changes to MSVC runtime deployment (no more SxS with manifest)

pointers - 将 C++/CLI 引用参数转换为原始指针