저는 열거 형의 작업을 이해하기 위해 C++ 표준을 약간 읽으려고했습니다. 실제로 원래 생각했던 것보다 더 많은 것이 있습니다.C++에서 C++ 열거 형의 기본 형식 0x
범위가 지정된 열거 형의 경우 enum-base 절 (모든 정수 유형이 될 수 있음)이 지정되지 않은 경우 기본 형식이 int
인 것이 분명합니다. 범위가 지정되지 않은 열거 들어
enum class color { red, green, blue}; // these are int
, 작동하고있을 필요하지 않는 한이, int 형보다 큰 수 없음을 어떤 정수 계열 형식이 될 수있는 기본 유형처럼 보인다.
enum color { red, green, blue}; // underlying type may vary
범위가 지정되지 않은 enumarations의 기본 형식이 표준화되어 있지 않기 때문에, 하나의 직렬화 인스턴스를 처리하는 가장 좋은 방법은 무엇입니까? 지금까지 나는 int
에 직렬화를 쓰고 읽을 때 스위치에 내 enum
변수를 설정할 때 int
으로 변환했습니다.하지만 조금 어색한 것처럼 보입니다. 더 좋은 방법이 있습니까?
enum color { red, green, blue };
color c = red;
// to serialize
archive << (int)c;
// to deserialize
int i;
archive >> i;
switch(i) {
case 0: c = red; break;
case 1: c = green; break;
case 2: c = blue; break;
}
열거 클래스 만 C++ 0X ... – Klaim
+1,이 질문은 -1ed 이유를 모르겠 ... –
아마도 질문자는 분명히 기존 및 제안 된 표준 문서를 구별 할 수 없기 때문에? –