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
Color
Car
sadece s için özel bir şey ise bu kapsamı sınırlamak istiyorsunuz. Eğer diğer sınıfları kullananColor
başka bir numaralama için, sonra da küresel (ya da en azındanCar
dışında) yapabilirsiniz.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.
Java, bir sınıf içinde numaralama türl...
Statik bir sınıf içinde bir Sözlük ila...
Hangi karakter CSS sınıf isimleri/seçi...
Java sınıf yolu içinde birden fazla ka...
Objective C içinde soyut bir sınıf olu...