निम्नलिखित कोड स्निपेट में, ColorEnum Carके दायरे को सीमित करने और वैश्विक नामस्थान को "प्रदूषित" न करने का प्रयास करने के लिए , वर्ग के भीतर एनम को घोषित किया जाता है ।
class Car
{
public:
enum Color
{
RED,
BLUE,
WHITE
};
void SetColor( Car::Color color )
{
_color = color;
}
Car::Color GetColor() const
{
return _color;
}
private:
Car::Color _color;
};
(१) क्या यह Colorएनम के दायरे को सीमित करने का एक अच्छा तरीका है ? या, क्या मुझे इसे Carकक्षा के बाहर घोषित करना चाहिए , लेकिन संभवतः अपने स्वयं के नामस्थान या संरचना के भीतर? मैं बस आज इस लेख के पार आया, जो बाद की वकालत करता है और चर्चा करता है कि एनम के बारे में कुछ अच्छे बिंदुओं पर: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums ।
(२) इस उदाहरण में, जब कक्षा के भीतर काम करते हैं, तो क्या एनम को कोड करना सबसे अच्छा है Car::Color, या केवल Colorपर्याप्त होगा? (मुझे लगता है कि पूर्व बेहतर है, बस मामले Colorमें वैश्विक नाम स्थान में एक और एनम घोषित किया गया है। इस तरह, कम से कम, हम उस एनम के बारे में स्पष्ट हैं जिसका हम उल्लेख कर रहे हैं।)
Car::Color getColor()लेकिनvoid Car::setColor(Color c)क्योंकिsetColorहम पहले से ही निर्दिष्ट है।