Trong đoạn mã sau, Colorenum được khai báo trong Carlớp để giới hạn phạm vi của enum và cố gắng không "làm ô nhiễm" không gian tên toàn cục.
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) Đây có phải là một cách tốt để giới hạn phạm vi của Colorenum? Hoặc, tôi nên khai báo nó bên ngoài Carlớp, nhưng có thể trong không gian tên hoặc cấu trúc của chính nó? Tôi vừa xem qua bài viết này hôm nay, trong đó ủng hộ phần sau và thảo luận về một số điểm hay về enums: http://gamesfromwithin.com/stool-c-tricks-2-better-enums .
(2) Trong ví dụ này, khi làm việc trong lớp, tốt nhất là viết mã enum như Car::Color, hoặc chỉ là Colorđủ? (Tôi cho rằng cái trước là tốt hơn, chỉ trong trường hợp có một Colorenum khác được khai báo trong không gian tên toàn cầu. Bằng cách đó, ít nhất, chúng tôi rõ ràng về enum mà chúng tôi đang đề cập.)
Car::Color getColor()nhưngvoid Car::setColor(Color c)bởi vì trongsetColorchúng tôi đã có specifier.