C++ Enum Class 사용하기

|

C++의 Enum은 내부적으로 int와 동일하게 사용된다. 하지만 기존의 Enum의 한계에 따라 Enum Class가 등장하였다.

기존의 Enum 사용법

enum Color {
    RED,
    YELLOW,
    BLUE
}

기존의 Enum Class 사용하기

Color color = RED;
int red = RED;

기존의 Enum 문제점

enum Color2 { // Error!!
    RED, 
    YELLOW,
    BLUE
}

Enum Class의 등장

enum class Color {
    RED,
    YELLOW,
    BLUE
}
enum class Color2 { 
    RED, 
    YELLOW,
    BLUE
}

Enum Class 사용하기

기존과 다른점은, 스코프의 등장으로 Enum class의 이름을 사용하여 불러올수 있다는 점과, int값으로 자동 변환되지 않기때문에 casting을 사용해야한다는 점이다.

Color color = Color::RED;
Color2 color2 = Color2::RED;

int red = Color::RED // 에러!
int red = static_cast(Color::RED) // 정상
</pre>