列挙型

構文

アンマネージド

enum MyEnum { A, B, C };

int e1 = B;         // 1
int e2 = MyEnum::B; // 1

マネージド

access enum class name [:type] { enumerator-list } var;
Syntax - enum class (C++ Component Extensions) | MSDN
enum class MyEnum { D, E, F };

int e1 = E;         // C2065 'E': 定義されていない識別子です。
int e2 = MyEnum::E; // C2440 '初期化中': 'MyEnum' から 'int' に変換できません。

MyEnum e3 = E;         // C2065 'E': 定義されていない識別子です。
MyEnum e4 = MyEnum::E; // OK "E"

型の変換

enum UnmanagedEnum { A, B, C };
enum class ManagedEnum { D, E, F };

// 列挙型から単純型へ
int u1 = A; // 0
int u2 = B; // 1

int m1 = (int)ManagedEnum::D; // 0
int m2 = (int)ManagedEnum::E; // 1

// 単純型から列挙型へ
UnmanagedEnum un1 = (UnmanagedEnum)0; // A
UnmanagedEnum un2 = (UnmanagedEnum)1; // B

ManagedEnum ma1 = (ManagedEnum)0; // D
ManagedEnum ma2 = (ManagedEnum)1; // E
Microsoft Learnから検索