SW/C++

C++ : enum class : enum과 차이점, 장점, 사용법, 반복문 예제

얇은생각 2020. 4. 13. 07:30
반응형

C++ : enum class : enum과 차이점, 장점, 사용법, 반복문 예제

 

Enum

C에서도 Enum을 다루기도 합니다. 좋은 점이 많지만, C에서는 타입을 비교할 때, 정수형태로 비교를 하기 떄문에 문제가 있었습니다. 

 

 

 

enum class

enum class를 활용하면, 다른 enum 끼리 타입을 비교하거나, 정수 형태로 초기화하는 것을 방지해줍니다. 

즉, C++11에서 제대로 지원되는 것입니다. 정수형으로의 암시적 캐스팅이 존재하지 않습니다.

자료형 검사를 진행하며, 또한, enum에 할당할 바이트 양을 정할 수 도 있습니다. 

 

#include <cstdint>

enum class eScoreType : uint8_t
{
    Assignment1,
    Assignment2,
    Assignment3,
    Midterm,
    Final = 0x100,
};
// 경고를 알림

 

enum class로 정수형을 명시하는 방법은 위와 같습니다.

 

 

 

for (int i = static_cast<int>(eScoreType::Assignment1);
        i < static_cast<int>(eScoreType::Count);
        ++i)
{
    // code
}

 

다만 단점으로는 for 문을 돌릴 때 조금 복잡해집니다. static_cast를 활용하여 형을 변환하여서 반복문을 진행해야 합니다. 

반응형