2011-08-23 3 views
3

, 내가있는 경우 :캐스트 연산자를 열거 형에 넣어 다른 형식으로 변환 할 수 있습니까? 예를 들어

enum SomeEnum { One, Two, Three }; 

내가 직접 부호없는 정수 또는 문자열로 열거를 얻을 수 있도록하려면, 내가 열거보고 할 것 캐스팅 연산자를 쓸 수 있습니다 값을 반환하고 적절한 표현을 반환합니까?

클래스를 사용하여이 작업을 수행 할 수 있음을 알고 있지만 열거 형으로 처리 할 수 ​​있는지 확실하지 않았습니다.

답변

3

열거 형을 정수로 변환 할 수 있습니다. 이렇게하려면 캐스트가 필요하지 않습니다. 그러나 문자열로 자동 변환하는 방법은 없습니다.

문자열 배열을 병렬로 사용하려는 경우 열거 형을 사용하여 쉽게 색인을 생성 할 수 있습니다. 유일한 문제는 변경할 때 두 가지 사항을 신중하게 수정하지 않으면 동기화되지 않을 수 있다는 것입니다.

char * SomeEnumNames[] = { "One", "Two", "Three" }; 

cout << SomeEnumNames[One] << endl; // should output "One" 
0

아니요,이 작업은 클래스로만 가능합니다. 열거 형 값을 문자열이나 기타로 바꾸는 함수를 작성해야합니다.

열거 값은 자체적으로 int으로 명시 적으로 변환 될 수 있습니다.

0

예,이 같은 정수 유형으로 열거 전송할 수 있습니다 : 특별히 각 열거의 정수 값을 설정하지 않는

int someInt = (int)someEnumValue; 

기본적으로 열거, 각 값에 대해 0에서 시작하여 증가한다 . 다음과 같이 정수 값을 열거 형에 할당 할 수 있습니다.

public enum SomeType 
{ 
    FirstValue = 1, 
    SecondValue = 3, 
    ThirdValue = 5 
} 
+0

'Enum.GetName'은 C++과 비슷하지 않습니다. –

+0

@ Mark Random : 지적 해 주셔서 고맙습니다. 내가 그 꼬리표를 잘못 읽은 것처럼 보입니다. 다른 문법이 작동합니까? –

+0

열거 형은 1이 아닌 0에서 시작합니다. –

관련 문제