C,C++

[C++] 'enum class' 란?

Dongjun_ 2024. 6. 1. 00:09

요약은 맨아래

 

C++ 11 버전에서 새로 도입된 열거형이다.
(참고로 열거형이란 '상수 집합을 정의하는 강력한 도구' 라고 한다.  1,2,3... 등)

 

이전에는 enum 키워드를 사용하여 열거형(상수 집합)을 쓸 뿐이였지만 class 형태로 고도화 된 것이다.

 

가장 큰 차이점은 enum 의 경우 아래와 같은 사용이 가능하나

enum Number {
    One = 1,
    Two,
    Three,
};

Number myNumber = Number::Three; // myNumber == 3
std::cout << myNumber << std::endl;

 

enum class 의 경우 불가능하다

enum Number {
    One = 1,
    Two,
    Three,
};

Number myNumber = Number::Three; // myNumber == 3
std::cout << myNumber << std::endl; // Compile Error

 

왜냐하면 enum class 는 암시적 형변환이 되지 않으며, 명시적인 형변환만이 가능하기 때문이다.

따라서 아래와 같이 사용하면 된다.

enum Number {
    One = 1,
    Two,
    Three,
};

Number myNumber = Number::Three; // myNumber == 3
std::cout << static_cast<int>(myNumber) << std::endl;

 

 

- 요 약 -

한마디로 static_cast<int> 쓰라고

아 물론 (int) 도 된다.

반응형