오븐 노트

[C++] enum class 본문

Develop/C++

[C++] enum class

오 븐 2023. 12. 13. 21:48
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
#include <algorithm>

// unscoped enum (범위없는) // enum의 고질적 문제 : 선언된 이름이 모든 범위에 유효하기에 다른곳에서 해당 이름을 사용 할 수 없게됨.
enum PlayerType : char
{
	PT_None,
	PT_Knight, // 때문에 다른곳과 겹치지 않게끔 이런식으로 약자를 겹치는 경우가 흔함
	PT_Archer,
	PT_Mage
};

enum MonsterType
{
	MT_None,
};

// 현재 범위에만 유효, 해당 enum 이름 자체가 타입처럼 작용됨
enum class ObjectType
{
	Player,
	Monster,
	Projectile
};

int main()
{
	// enum class (scoped enum)
	// 1) 이름공간 관리 (scoped)
	// 2) 암묵적인 변환 금지

	double value1 = PT_Knight; // 보기 편한 이름일뿐 사실상 1이라는 값
	//double value2 = ObjectType::Player; // 문법상 이게 맞는 표현, 하지만 암묵적 변환이 금지되어 불가능
	double value2 = static_cast<double>(ObjectType::Player); // 강제 캐스팅

	int choice;
	cin >> choice;

	if (choice == static_cast<int>(ObjectType::Monster))
	{

	}
	
	unsigned int bitFlag;
	bitFlag = (1 << static_case<int>(ObjectType::Player));


	return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

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

[C++] override, final  (0) 2023.12.28
[C++] delete(삭제된 함수)  (0) 2023.12.13
[C++] using  (0) 2023.12.07
[C++] nullptr  (0) 2023.12.07
[C++] 중괄호 초기화 { }  (0) 2023.10.16