2014-06-10 3 views
1

내 코드에서는 enumarators를 사용하여 특정 인스턴스에만 값 집합을 할당 할 수 있지만 int에서 enum 유형으로 변환하거나 또는 그 반대로 변환 할 때 지겨워합니다. 그 이상한 사람을 피하기 위해 int enum 같은 것이 있습니까 static_cast?enumarators를 사용하는 가장 좋은 방법

+0

글쎄, 한 방향으로는 '+'가 있습니다. – chris

+0

'enum class' 또는 간단한'enum'을 사용하고 있습니까? –

+0

@RSahu : 나는'enum class'를 하나 이상 가지고 있고 그것들은 같은 이름을 가진 멤버들을 가지고 있기 때문에'enum class'를 사용합니다. – Shibli

답변

1

열거 자와 기본 형식의 변수 간 암시 적 변환을 허용하려면 C++ 11의 범위가 지정된 열거 형을 사용하지 마십시오. 구체적

enum class scoped : unsigned 
{ 
    Enumerator_1, 
}; 

enum /*class*/ unscoped : unsigned 
{ 
    Enumerator_1, 
}; 

int main() 
{ 
    unsigned a = static_cast<unsigned>(scoped::Enumerator_1); // explicit conv 
    unsigned b = unscoped::Enumerator_1;      // implicit conv allowed 
} 

, enum class (또는 enum struct)를 사용하지 않는다. 기본 유형을 지정할 수 있지만 암시 적 변환은 이제 허용됩니다.

Live demo

관련 문제