SORU
23 Mart 2010, Salı


Bir sınıf içinde ilan eden bir numaralama

Aşağıdaki kod parçasında, Color numaralama numaralama kapsamını sınırlamak ve "genel ad. kirletme denemek için Car sınıf içinde bildirilmiş

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) bunun için iyi bir yoldur Color numaralama? kapsamını sınırlamak Ya da, kendi ad veya yapı içinde Car sınıf dışında, ama bunu ilan etmeli miyim? İkincisi savunucuları ve çeteleler hakkında bazı güzel noktaları ele alan sadece bu madde bugün rastladım: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums.

(2) Bu örnekte, çalışırkeniçindesınıfının en iyi Car::Color, numaralama kodu ya Color yeterli mi? (Eski Color başka bir numaralama genel ad alanında bildirilen var diye daha iyi olduğunu düşünüyorum. Bu şekilde, en azından bahsettiğimiz için numaralama ile ilgili açık.)

Bu konuda herhangi bir giriş için şimdiden teşekkür ederiz.

CEVAP
23 Mart 2010, Salı


  1. Color Carsadece s için özel bir şey ise bu kapsamı sınırlamak istiyorsunuz. Eğer diğer sınıfları kullanan Color başka bir numaralama için, sonra da küresel (ya da en azından Car dışında) yapabilirsiniz.

  2. Hiç fark etmez. Eğer küresel bir sonra ise orada yerel bir hala geçerli kapsamı daha yakın olduğu için yine de kullanılır. Sınıf tanımının dışında bu işlev tanımlarsanız o zaman açıkça işlevi arabirim Car::Color belirtmek gerekir unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • J Medema

    J Medema

    11 EKİM 2006
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006