ในโค้ดต่อไปนี้Colorenum จะถูกประกาศภายในCarคลาสเพื่อ จำกัด ขอบเขตของ enum และพยายามที่จะไม่ "สร้างมลภาวะ" เนมสเปซส่วนกลาง
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) นี่เป็นวิธีที่ดีในการ จำกัด ขอบเขตของColorenum หรือไม่? หรือฉันควรประกาศมันนอกCarชั้นเรียน แต่อาจจะอยู่ในเนมสเปซหรือ struct ของตัวเอง? ฉันเพิ่งมาข้ามบทความนี้ในวันนี้ซึ่งสนับสนุนหลังและกล่าวถึงจุดที่ดีบางอย่างเกี่ยวกับ enums: http://gamesfromwithin.com/stupid-c-tricks-2-better-enums
(2) ในตัวอย่างนี้เมื่อทำงานภายในชั้นเรียนจะดีที่สุดในการเขียนรหัส enum เป็นCar::Colorหรือแค่Colorพอเพียง? (ฉันถือว่าอดีตนั้นดีกว่าในกรณีที่มีColorenum อื่นที่ประกาศใน namespace ทั่วโลกด้วยวิธีนี้อย่างน้อยที่สุดเราก็ชัดเจนเกี่ยวกับ enum ที่เรากำลังอ้างอิง)
Car::Color getColor()แต่void Car::setColor(Color c)เนื่องจากในตัวsetColorเรามีตัวระบุอยู่แล้ว