Aşağıdaki kod snippet'inde, Color
numaralandırmanın Car
kapsamını sınırlamak ve genel ad alanını "kirletmemek" için sınıflandırma sınıf içinde bildirilir .
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;
};
(1) Bu, Color
numaralandırma kapsamını sınırlamanın iyi bir yolu mu? Yoksa, Car
sınıfın dışında , ancak muhtemelen kendi ad alanı veya yapısı içinde mi ilan etmeliyim ? Bugün bu makaleye geldim, ikincisini savunuyor ve numaralandırmalar hakkında bazı güzel noktaları tartışıyor: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
(2) Bu örnekte, sınıf içinde çalışırken , sıralamayı en iyi şekilde kodlamak mı Car::Color
yoksa Color
yeterli olur mu? (Birincisinin daha iyi olduğunu düşünüyorum, Color
küresel ad alanında başka bir numaralandırma bildirilmesi durumunda . En azından, bahsettiğimiz numaralandırma hakkında açıkız.)
Car::Color getColor()
amavoid Car::setColor(Color c)
çünküsetColor
biz zaten belirtici var.