Aşağıdaki kod snippet'inde, Colornumaralandırmanın Carkapsamı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, Colornumaralandırma kapsamını sınırlamanın iyi bir yolu mu? Yoksa, Carsı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::Coloryoksa Coloryeterli olur mu? (Birincisinin daha iyi olduğunu düşünüyorum, Colorkü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üsetColorbiz zaten belirtici var.