निम्नलिखित कोड स्निपेट में, Color
Enum 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
हम पहले से ही निर्दिष्ट है।