enum class(scoped enum)
// 장점1) 이름공간 관리(scoped)
// 장점2) 암묵적인 변환 금지(단점이 될 수 있음)
// 기존 enum의 사용
enum PlayerType : char /*자료형도 선택 가능*/
{
PT_Knight,
PT_Archer,
PT_Mage
};
enum PlayerType2
{
PT_Knight, // Error : enum은 이름공간 재사용 불가
PT_Archer,
PT_Mage
};
// enum class 사용
enum class ObjectType
{
Player,
Monster,
Projectile
};
enum class ObjectType2
{
Player, // Okay : 재사용 가능
Monster,
Projectile
};
int main()
{
double value = PT_Knight; // okay
int value2 = ObjectType::Player; // Error : 암묵적 형변환 불가능
int value2 = static_castint>(ObjectType::Player); // 이런식으로 명시적 변환을 해야함
}