enum과 enum class

enum과 enum class의 차이

  • 값 중복 에러 여부
// enum
// Error 발생
enum shaderType {model, text, partyicle, light, end}
enum someType {model, text, partyicle, light, end} 

// enum class
// Error 없음
enum class people {none, white, black, yellow}
enum class color {none, white, red, black, yellow}

// enum class는 값 호출 시 class::까지 표기
enum class people {none, white, black, yellow}
people p = white; // 에러 
people p = people::white; // 가능
  • implicit 정수 치환 가능 여부
// enum
// implicit conversion to int
// 루프 가능 (enum class는 불가능)
for (int i = 0; i < shaderType ::end; ++i) 
{ 
  // ...
}
  • 기타
// enum의 값 범위를 아래와 같이 정의 가능
enum COLOR : int {WHITE, RED, BLUE, BLACK, YELLOW, END};
enum PEOPLE : unsigned int {WHITE, BLACK, YELLOW, END};

// enum 값 범위를 bool로 두었을 때
// 0, 1, 1, 1, 1, …..
enum A : bool { ONE , TWO  , THREE,  FOUR, ... };
A a = THREE; // 1

// enum 값 할당 
enum A : char { ONE = 4, TWO = 3, THREE };
A a = THREE; // 4

Categories: ,

Updated: