enum class 선언
enum class를 정의할 때 명시적으로 기본 타입을 지정하지 않으면 int 형으로 설정된다.
또한 첫번째 멤버의 값을 지정하지 않은 경우 첫번째 멤버는 0으로 초기화되고 그 다음 멤버는 1씩 증가한다.
enum class MyEnum {
VALUE1,
VALUE2,
VALUE3
};
열거형 멤버 접근
:: 연산자를 사용해 접근한다.
MyEnum myVar = MyEnum::VALUE1;
정수값으로 변환
enum 클래스의 기본 타입이 int라고 해도 바로 정수값으로 변환되지는 않기 때문에 형변환 연산자를 사용해야 한다.
int intValue = 0;
MyEnum enumValue = MyEnum::VALUE1;
if (intValue == enumValue) { // 오류! 비교 불가능
// ...
}
// 형변환 필요
int valueAsInt = static_cast<int>(myVar);
스위치문과 enum class
다음과 같이 사용할 수 있다.
switch (myVar) {
case MyEnum::VALUE1:
// 처리 코드
break;
case MyEnum::VALUE2:
// 처리 코드
break;
case MyEnum::VALUE3:
// 처리 코드
break;
}
enum class의 범위제한
enum class는 멤버에 접근할때 항상 "enum class명::멤버"로 접근하기 때문에 다른 열거형끼리 멤버이름이 같더라도 충돌할 일은 없다.
enum class TrafficLight {
RED,
YELLOW,
GREEN
};
enum class Signal {
RED,
YELLOW,
GREEN
};
int 외 다른 정수 형식으로 enum class 정의하기
선언시 : 연산자 뒤에 short, char, unsigned int 등을 써서 다른 정수형식으로 지정하는 것이 가능하다. 이렇게 정수 형식을 명시하면 해당 열거형의 크기가 형식에 맞게 조절된다.
enum class MyShortEnum : short {
VALUE1 = 0,
VALUE2,
VALUE3
};
'프로그래밍 > C++' 카테고리의 다른 글
C++ ] 인라인 함수 (0) | 2023.10.07 |
---|---|
C++ ] 연속된 메모리 공간에 저장되는 벡터의 메모리 재할당 빈도 (0) | 2023.10.06 |
C++ ] .ini 파일 포맷, 설정 파일 입출력 방법 (0) | 2023.09.27 |
C++ ] 람다식 사용법 및 람다식으로 콜백 구현 (0) | 2023.09.26 |
C++ ] std::thread 스레드 사용법 (0) | 2023.09.25 |