Programing

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

lottogame 2020. 5. 9. 09:06
반응형

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로 캐스팅하는 데 사용될 수 있습니다.

참고 URL : https://stackoverflow.com/questions/11452920/how-to-cast-int-to-enum-in-c

반응형