में एनम वैल्यू एक्सेस करें मेरे पास "फू" कक्षा (नीचे) में परिभाषित enum मानों का एक सेट है।सी ++ 98 और सी ++ 11
namespace Fii
{
class Foo
{
struct Bar
{
enum Baz
{
BAZ1,
BAZ2,
BAZ3
};
};
};
};
मैं एक struct उपयोग कर रहा हूँ के रूप में अच्छी तरह से बाज enum मूल्यों के दायरे को कम करने के शो के रूप में वहाँ संबंधित मूल्यों का एक समूह है।
मेरा उद्देश्य एक एनम प्रकार से एक चर को एक वैल्यू असाइन करना है। ऊपर वर्ग परिभाषा का उपयोग करना, एक ऐसा कर सकते हैं:
Fii::Foo::Bar::Baz myValue = Fii::Foo::Bar::BAZ1 (Works in both C++98 and C++11)
हालांकि, मुझे लगता है कि:
- पहली नज़र में, myValue एक Fii :: फू के रूप में प्रारंभ किया जा रहा है :: बार लेकिन यह है सिर्फ इसलिए कि enum माता पिता (बार इस मामले में)
करने में समूह संबंधित स्थिरांक को हैक कर रहे हैं तत्परता में सुधार, द्वितीय के लिए कोड को फिर से कारक: इस नए वर्ग परिभाषा का उपयोग
namespace Fii
{
class Foo
{
enum Baz
{
BAZ1,
BAZ2,
BAZ3
};
};
};
, एक ऐसा कर सकते हैं:
Fii::Foo::Baz myValue = Fii::Foo::Baz::BAZ1 (Works in C++11 only)
Fii::Foo::Baz myValue = Fii::Foo::BAZ1 (Should work on C++98 and C++11 - not tested)
क्यू 1) क्यों Fii :: फू :: है बार: : बाज़ myValue = Fii :: Foo :: Baz :: BAZ1 केवल C++ 11 पर काम कर रहा है?
Q2) सी ++ 98 में, वहाँ एक रास्ता Fii :: फू :: बाज myValue = Fii :: फू :: बाज :: BAZ1 लिखने के लिए है? कक्षा परिभाषा में आपको कोई भी बदलाव करने की अनुमति है।
पर्यावरण: - Xcode 4 - - मैक ओएस OS 10.8
क्या आप कृपया बता सकते हैं कि कोड का यह टुकड़ा क्यों आवश्यक है? बाज़ (ई ई): ई_ (ई) {} ऑपरेटर कॉन्स ई() कॉन्स {वापसी ई_; } निजी: ई ई_; –
@ डेविड एंड्रॉलेटि: उपरोक्त कोड में, बाज एक "उपयोगकर्ता परिभाषित प्रकार" है - एक वर्ग जिसका ऑब्जेक्ट प्रत्येक एक 'ई' मान का प्रबंधन करता है। जिस कोड के बाद आप पूछते हैं वह वह कन्स्ट्रक्टर है जो गणनाओं में से एक को संग्रहीत करता है, एक ऑपरेटर जो स्पष्ट रूप से 'ई' मान प्रदान करता है जब ऑब्जेक्ट एक अभिव्यक्ति में प्रकट होता है जहां संकलक को पता नहीं होता कि' बाज 'के साथ क्या करना है, और सदस्य चर 'ई' संग्रहित। स्पष्ट है क्या? - आगे स्पष्टीकरण/उदाहरणों के लिए पूछने के लिए स्वतंत्र महसूस करें .... –
मैंने आपके सुझाव की कोशिश की और यह ठीक काम करता है। क्या आपको लगता है कि यह मदद कोड पठनीयता है और कोड रखरखाव में बाधा नहीं डालता है? –