C ++에서 int를 열거 형으로 캐스팅하는 방법은 무엇입니까?
예를 들면 다음과 같습니다.
enum Test
{
A, B
};
int a = 1;
a
유형으로 변환 하려면 어떻게합니까 Test::A
?
답변
int i = 1;
Test val = static_cast<Test>(i);
답변
Test e = static_cast<Test>(1);
답변
귀하의 코드
enum Test
{
A, B
}
int a = 1;
해결책
Test castEnum = static_cast<Test>(a);
답변
마지막 질문을 던지면서 “내가 캐스트Test::A
해야하는 요구 사항에 대해 단단하지 않고 “어떻게 유형으로 변환합니까? “라는 질문을 던 졌습니다. C ++ 11 표준에 따라 :
5.2.9 정적 캐스트
… 일부 선언 된 형식의 임시 변수 (8.5)에 대해 선언 이 올바르게 구성되어 있으면
e
식T
을 형식의 형식을 사용하여 명시 적으로 형식으로 변환 할 수 있습니다 . 이러한 명시 적 변환의 효과는 선언 및 초기화를 수행 한 다음 변환의 결과로 임시 변수를 사용하는 것과 같습니다.static_cast
static_cast<T>(e)
T t(e);
t
따라서 양식 t(e)
을 직접 사용하면 효과 가 있으며 깔끔하게 선호 할 수 있습니다.
auto result = Test(a);
답변
Test castEnum = static_cast<Test>(a-1);
하위 구조 1을 원하지 않으면 다음을 재정의 할 수 있습니다 enum
.
enum Test
{
A:1, B
};
이 경우`Test castEnum = static_cast (a); ‘ a를 A로 캐스팅하는 데 사용될 수 있습니다.