다음을 통해 공유


열거형(C++/CX)

C++/CX는 public enum class 표준 C++scoped enum에 유사한 키워드(keyword) 지원합니다. public enum class 키워드를 사용하여 선언된 열거자를 사용할 경우 열거형 식별자를 사용하여 각 열거자 값의 범위를 지정해야 합니다.

설명

public enum class 과 같은 액세스 지정자가 없는 public는 표준 C++ 범위 지정 열거형으로 처리됩니다.

a public enum class 또는 public enum struct 선언은 모든 정수 계열 형식의 기본 형식을 가질 수 있지만 Windows 런타임 자체에서는 형식이 int32이거나 플래그 열거형의 경우 uint32여야 합니다. 다음 구문에서는 a 또는 public enum struct.의 public enum class 일부를 설명합니다.

이 예제에서는 public enum 클래스를 정의하는 방법을 보여 줍니다.

// Define the enum
public enum class TrafficLight : int { Red, Yellow, Green }; 
// ...

다음 예제에서는 클래스를 사용하는 방법을 보여 줍니다.

// Consume the enum:
TrafficLight myLight = TrafficLight::Red;
if (myLight == TrafficLight::Green) 
{
    //...
} 

예제

다음 예제에서는 열거형을 선언하는 방법을 보여 줍니다.

// Underlying type is int32
public enum class Enum1
{
    Zero,
    One,
    Two,
    Three
};

public enum class Enum2
{
    None = 0,
    First,      // First == 1
    Some = 5,
    Many = 10
};

// Underlying type is unsigned int
// for Flags. Must be explicitly specified
using namespace Platform::Metadata;
[Flags]
public enum class BitField : unsigned int 
{
    Mask0 = 0x0,
    Mask2 = 0x2,
    Mask4 = 0x4,
    Mask8 = 0x8
};

Enum1 e1 = Enum1::One;
int v1 = static_cast<int>(e1);
int v2 = static_cast<int>(Enum2::First);

다음 예제에서는 해당 숫자로 캐스팅하고 비교를 수행하는 방법을 보여 줍니다. 열거자 One 의 사용은 Enum1 열거형 식별자로 범위가 지정되고, 열거자 FirstEnum2로 범위가 지정됩니다.

 if (e1 == Enum1::One) { /* ... */ }
 //if (e1 == Enum2::First) { /* ... */ } // yields compile error C3063

 static_assert(sizeof(Enum1) == 4, "sizeof(Enum1) should be 4");

 BitField x = BitField::Mask0 | BitField::Mask2 | BitField::Mask4;
 if ((x & BitField::Mask2) == BitField::Mask2) { /*   */ } 

참고 항목

형식 시스템
C++/CX 언어 참조
네임스페이스 참조