2010-10-13 16 views
5

मैं एक वर्ग एक enum शामिल है के बजाय BLUE बस BLUE के रूप में। उसी समय, मैं के भीतर enum रखना चाहता हूं, क्योंकि मुझे लगता है कि यह सबसे स्वाभाविक है। मैंने namespace और using के विभिन्न संयोजनों का प्रयास किया है, लेकिन इसका कोई फायदा नहीं हुआ है।निर्यात हिस्सा

कोई सुझाव ???

+0

मैं एक ऐसी ही समस्या थी: एक enum के नाम को छोटा करने के। 'लंबा :: पथ :: से :: enum' जहां' to' enum युक्त कक्षा थी। चूंकि मैं कस्टम शॉर्ट लेबल वाले नेमस्पेस पर अग्रेषित नहीं कर सका, मैंने कक्षा से 'से' तक उप-वर्ग का निर्णय लिया: 'कक्षा खान: सार्वजनिक करने के लिए {सार्वजनिक: लंबे :: पथ :: का उपयोग करना; निजी: मेरा() {}; }; 'जैसा कि आप देख सकते हैं कि मैंने इस वर्ग के उदाहरणों को एक निजी कन्स्ट्रक्टर द्वारा उत्पन्न करने से मना कर दिया है, इसलिए अब मैं इसे' माइन :: एनम 'के बहुत कम तरीके से उपयोग कर सकता हूं। प्रकार के रूपांतरण के बिना, आदि – math

उत्तर

3

मुझे नहीं लगता कि यह किया जा सकता है। AFAIK, आप here निर्धारित अनुसार किसी अन्य वर्ग या संरचना में using appearance::color का उपयोग कर सकते हैं।

एक वर्ग एक में एक घोषणा का उपयोग कर हो सकता है नाम निम्न में से एक:

  • एक

  • एक गुमनाम संघ का एक सदस्य है कि एक का एक आधार वर्ग के एक सदस्य ए

  • एक गणित प्रकार के लिए एक गणनाकर्ता जो

    की बेस क्लास का सदस्य है 210
1

मुझे नहीं लगता कि आप इसे कक्षा-स्कोप्ड एनम के साथ कर सकते हैं। शायद कुछ समान हासिल करने का एकमात्र तरीका enum को अपने विशिष्ट नामस्थान में संलग्न करना है और उसके बाद उस जगह का उपयोग करें जहां enum में होने की आवश्यकता है।

संपादित करें: इस प्रश्न में How do you import an enum into a different namespace in C++? मैं एक नामस्थान से दूसरे नाम में एक enum आयात करने का एक संभावित तरीका दिखाता हूं, लेकिन मुझे विश्वास नहीं है कि यह इस वर्ग के मामले के लिए काम करेगा (जैसा भी है)।

1

जैसा कि जैकब ने कहा था कि आप इसे सीधे नहीं कर सकते हैं, लेकिन आप इसे अपने नामस्थान के भीतर enum encapsulating द्वारा काम कर सकते हैं।

namespace enums{ 
     enum color 
     {BLUE 
     ,RED 
     ,GREEN}; 
} // namespace enums 


using namespace enums; 
class Foo 
{ 
    int Bar(){return BLUE;} 
} 

कुछ इस तरह काम करना चाहिए ...

+0

ओपी का उल्लेख है "मैं कक्षा के भीतर enum रखना चाहता हूं {}"। – casablanca

संबंधित मुद्दे