enum class필드를 기본 유형 으로 변환하는 방법이 있습니까? 나는 이것이 자동이라고 생각했지만 분명히 그렇지 않습니다.
enum class my_fields : unsigned { field = 1 };
unsigned a = my_fields::field;
해당 할당은 GCC에서 거부됩니다. error: cannot convert 'my_fields' to 'unsigned int' in assignment.
참고로이 규칙은
—
궤도의 경쾌함 레이스
[C++11: 7.2/9].
@Pubby 슬프게도 범위가 지정되지 않은 'enum'은 모든 열거 자로 외부 범위를 오염시킵니다. 안타깝게도 기본 유형으로 암시 적으로 변환하는 동시에 범위를 깔끔하게 중첩하는 두 세계 (어쨌든 C ++ 14 기준)의 장점은 없습니다 (더 많이 파생 된 유형을 기본 유형을 취하는 함수에 대한 값 또는 참조).
—
Dwayne Robinson
@DwayneRobinson 네 그렇습니다. 범위가 지정되지 않은 열거 형을 구조체 또는 (더 바람직하게는) 네임 스페이스 안에 붙입니다. 따라서 범위가 지정되고 여전히 암시 적 int 변환이 있습니다. (하지만 int로 변환해야하는 이유에 대해 두 번 생각하고 아마도 더 나은 접근 방식이 있는지 고려할 것입니다.)
—
Pharap
enum.