मैं कक्षा है निम्नलिखित की तरह:सी में से मूल्यों Enum को एक्सेस करना '::' ++
class Car
{
public:
Car();
// Some functions and members and <b>enums</b>
enum Color
{
Red,
Blue,
Black
};
Color getColor();
void setColor(Color);
private:
Color myColor;
}
मैं चाहता हूँ करने के लिए: Color::Red
रूप
- पहुँच
Color
को मान। यह कोड को समझने के लिए वास्तव में शायद ही होता है जबCar::Red
, प्रयोग किया जाता है जब कक्षा एक बहुत enums है, उपवर्गों आदि - समारोह तर्क या में
switch
मैं वापसी मान
Color
रूप में उपयोग के प्रकार Color
पता 3 आंशिक समाधान:
- यह
- में एम्बेडेड वर्ग
Color
और enum का उपयोग एम्बेडेड nam का उपयोग करना EspaceColor
और enum यह - में
enum class
1 और 2 समाधान का उपयोग एक Color::Red
परिग्रहण समस्या का हल है, लेकिन मैं Color getColor()
और void setColor(Color)
जैसे कार्यों का उपयोग नहीं कर सकते हैं।
3 समाधान में कोई समस्या है: VS2010 enum class
का समर्थन नहीं करता है। जीसीसी v.4.1.2 भी इसका समर्थन नहीं करता है। मैं जीसीसी के बाद के संस्करणों के बारे में नहीं जानता।
हां, मैं क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट पर काम कर रहा हूं।
मुझे this समाधान मिला है, लेकिन ऐसा लगता है ... भारी।
मुझे आशा है कि किसी ने मुझसे यहाँ मदद कर सकते हैं :)
जीसीसी 4।6 ('-std = C++ 0x' के साथ) 'enum class' का समर्थन करता है, और नियमित enums के लिए' रंग :: लाल 'भी अनुमति देता है। – leftaroundabout
साइड नोट, कृपया पूर्व/कोड टैग – CharlesB
का उपयोग करने के बजाय 4 रिक्त स्थान के साथ इंडेंट कोड कृपया VS2010 से मिले ** ** आंशिक रूप से ** [मजबूत टाइप किए गए enums] का समर्थन है (http://www.open-std.org/jtc1/ sc22/wg21/docs/कागजात/2007/n2347.pdf)। – Jury