मैं निम्नलिखित समस्या के समाधान की एक hacky प्रकार के लिए देख रहा हूँ: जीसीसी 4.4+ निम्नलिखित C++ 0x कोड स्वीकार करता है:"enum वर्ग" अनुकरण या MSVC के लिए ठोस विकल्प 10.0
enum class my_enum
{
value1,
value2
};
कौन सा इस तरह के उपयोग की अनुमति देता है:
my_enum e = my_enum::value1;
यह सभी घंटियाँ और सीटी के साथ लाता है। मैं इस कोड को एमएसवीसी 2010 के साथ संगत बनाना चाहता हूं, इस प्रभाव के लिए कि उपयोग वाक्यविन्यास नहीं बदलता है। मैंने पहले ही here से पहले इस पर विचार किया है, और स्वीकार्य उत्तर काम करता है, लेकिन enum और enum मूल्यों के लिए दो अलग-अलग नामों की आवश्यकता दो दृष्टिकोणों की संगतता को मार रही है। यह निश्चित रूप से C++ 0x कोड को प्रतिस्थापित करने के लिए अनुपयोगी बनाता है। मुझे आश्चर्य हुआ कि कुछ #undef
और #define
चालबाजी इस पर काम कर सकती है, जिससे मुझे enum class
का उपयोग सिंटैक्स (शायद सख्त प्रकार की सुरक्षा आदि के बिना), लेकिन कम से कम एक ही वाक्यविन्यास का उपयोग कर सकता है। धन्यवाद!
बहुत अच्छा समाधान। –
कमाल का समाधान। यह विकृत होना चाहिए। – FailedDev
यह दृष्टिकोण कम से कम एमएसवीसी 10 पर 'स्विच'/'केस' की अनुमति नहीं देता है (मुझे" सी 2051: केस अभिव्यक्ति स्थिर नहीं है ")। यह एक बड़ा पिटा है, क्योंकि 'एनम' आमतौर पर इस तरह से उपयोग किया जाता है। –