C ++에서 int를 열거 형으로 캐스팅하는 방법은 무엇입니까? 캐스팅하는 방법은

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)에 대해 선언 이 올바르게 구성되어 있으면
eT
을 형식의 형식을 사용하여 명시 적으로 형식으로 변환 할 수 있습니다 . 이러한 명시 적 변환의 효과는 선언 및 초기화를 수행 한 다음 변환의 결과로 임시 변수를 사용하는 것과 같습니다.static_caststatic_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로 캐스팅하는 데 사용될 수 있습니다.