열거체

-> 사용자 정의 자료형이다.

-> 열거체는 멤버로 열거형을 가진다.

-> 열거형을 토대로 상태 값 지정 시 활용한다.

 

열거체의 형태

enum 자료형이름

{

 IDLE, ATTACK, RUN, WALK

}

열거형이란?

-> 상수의 성질을 가진다.

-> 좌측부터 0으로 시작한다.

-> 이후, 1씩 증가한 상수의 성질을 가진다.

 

열거체의 선언과 초기화

PlayerState eState = 0;    // 불가능
PlayerState eState = IDLE; // 가능

 

switch에서 열거체 적용

	switch (eState)
	{
	case IDLE:
		cout << "대기 상태" << endl;
		break;
	case WALK:
		cout << "걷기 상태" << endl;
		break;
	case RUN:
		cout << "달리기 상태" << endl;
		break;
	case ATTACK:
		cout << "공격 상태" << endl;
		break;
	case DEAD:
		cout << "사망 상태" << endl;
		break;
	}

 

열거형의 상수 성질 변경

enum PlayerStance { IDLE = 1, WALK, RUN, ATTACK, DEAD, END };
	 IDLE   == 1
	 WALK   == 2
	 RUN    == 3
	 ATTACK == 4
	 DEAD   == 5
	 END    == 6

 

열거체의 크기

-> 열거형의 개수와 상관 없이 4byte의 고정된 크기를 가진다.

-> 열거체는 결국 정수형을 가진다.

(정수를 저장하기 위해서는 4byte의 공간이 있으면 된다.)

 

 

열거체의 순서는 index이므로 0부터 시작한다.

PlayerState		eState = IDLE;			// 0
PlayerState		eState = ATTACK;		// 3

 

 

열거체와 열거체 클래스(enum class) 사용

// enum

enum PlayerState{IDLE, WALK, RUN};

PlayerState eState = IDLE;

// enum class

enum class PlayerState{IDLE, WALK, RUN};

PlayerState eState = PlayerState::IDLE;

enum 보다 enum class 가 더 안전하고 가독성도 좋다고한다.

 

비트 플래그 열거형은 이름 뒤에 Flags를 붙인다.

enum class eVisibilityFlags
{
}

 

특정 크기(예를 들어, 데이터 멤버의 직렬화를 위한 크기)가 필요하지 않은 한 열거형에 크기 지정자를 추가하지 않는다.

enum class eDirection : uint8_t
{
    North,
    South
}

 

'Programming > C++ Basic' 카테고리의 다른 글

C++ 함수 포인터  (0) 2020.09.07
C++ 공용체(union)  (0) 2020.09.07
C++ 경로  (0) 2020.09.02
C++ 입출력 스트림 버퍼, 단일 문자 입/출력 함수  (0) 2020.09.02
C++ 동적 할당(C, C++기반), malloc, calloc  (0) 2020.09.01

+ Recent posts