【问题标题】:What does "enum class" mean in Visual C++ 2012?Visual C++ 2012 中的“枚举类”是什么意思?
【发布时间】:2012-10-02 23:56:42
【问题描述】:

Visual C++ 2012 中enum class 有两个相互冲突的定义:

  • C++11,enum 的类型安全版本
  • C++/CLI,System::Enum 派生类型,等效于具有静态 const 整数成员的 ref class。

启用或禁用 /clr 开关时enum class 的含义会改变吗?

【问题讨论】:

标签: c++ .net visual-c++ enums c++11


【解决方案1】:

托管枚举必须具有访问说明符(public 或 private)。 C++11 范围的枚举不能有访问说明符。例如,

enum class E { e0 };

public enum class F { f0 };
private enum class G { g0 };

E 在 C++、C++/CLI 和 C++/CX 中有效,是一个普通的 C++ 作用域枚举。

F 和 G 仅在 C++/CLI 和 C++/CX 中有效,它们命名托管枚举(在 C++/CLI 中)或 Windows 运行时枚举(在 C++/CX 中)。

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2013-07-27
    • 2017-01-27
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多