में सी ++ एनम के अंतर्निहित प्रकार मैं एनम के काम को समझने के लिए सी ++ मानक का थोड़ा सा पढ़ने की कोशिश कर रहा हूं। मूल रूप से मैंने सोचा था कि वहां वास्तव में और भी कुछ है।सी ++ 0x
एक स्कॉम्ड गणना के लिए, यह स्पष्ट है कि अंतर्निहित प्रकार int
है जब तक कि अन्यथा एनम-बेस क्लॉज (यह कोई अभिन्न प्रकार नहीं हो) के साथ निर्दिष्ट किया जाता है।
enum class color { red, green, blue}; // these are int
unscoped enumerations के लिए, यह अंतर्निहित प्रकार की तरह लगता है किसी भी अभिन्न प्रकार है कि काम करेंगे और यह एक पूर्णांक से भी बड़ा नहीं होगा कि, जब तक यह होने की जरूरत है हो सकता है।
enum color { red, green, blue}; // underlying type may vary
के बाद से unscoped enumarations के अंतर्निहित प्रकार मानकीकृत नहीं हैं, जो एक के उदाहरण serializing से निपटने का सबसे अच्छा तरीका है? अब तक, int
में कनवर्ट करने के बाद मैं int
में क्रमबद्ध करने और मेरे enum
स्विच को स्विच करते समय स्विच में बदल रहा हूं, लेकिन यह थोड़ा उलझन में लगता है। क्या कोई बेहतर तरीका है?
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;
}
enum वर्ग है केवल C++ 0x ... – Klaim
+1, यकीन नहीं क्यों इस सवाल -1ed था ... –
संभवतः प्रश्नकर्ता जाहिरा तौर पर एक मौजूदा और प्रस्तावित मानकों दस्तावेज़ के बीच अंतर नहीं कर सकते क्योंकि? –