열거체
-> 사용자 정의 자료형이다.
-> 열거체는 멤버로 열거형을 가진다.
-> 열거형을 토대로 상태 값 지정 시 활용한다.
열거체의 형태
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 |