열거형(C++/CX)
C++/CX는 표준 C++에 유사한 키워드를 지원 public enum class
합니다 scoped enum
. 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
열거형 식별자로 범위가 지정되고, 열거자 First
는 Enum2
로 범위가 지정됩니다.
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) { /* */ }