반응형
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)에 대해 선언 이 올바르게 구성되어 있으면
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로 캐스팅하는 데 사용될 수 있습니다.
참고 URL : https://stackoverflow.com/questions/11452920/how-to-cast-int-to-enum-in-c
반응형
'Programing' 카테고리의 다른 글
텍스트 인코딩을 결정하는 방법은 무엇입니까? (0) | 2020.05.09 |
---|---|
SQL에서 count (column)과 count (*)의 차이점은 무엇입니까? (0) | 2020.05.09 |
String replace ()와 replaceAll ()의 차이점 (0) | 2020.05.09 |
좋은 Python ORM 솔루션은 무엇입니까? (0) | 2020.05.09 |
마크 다운 테이블의 줄 바꿈? (0) | 2020.05.09 |