(Modern C++) enum class

Posted by : at

Category : Cpp


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);   // 이런식으로 명시적 변환을 해야함
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links