다음 코드 스 니펫에서 Color
열거 형 Car
의 범위를 제한하고 전역 네임 스페이스를 "폴링"하지 않도록 클래스 내 에서 열거 형이 선언됩니다 .
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) 이것이 Color
열거 의 범위를 제한하는 좋은 방법 입니까? 또는 Car
클래스 외부에서 선언해야 하지만 자체 네임 스페이스 또는 구조체 내에서 선언해야 합니까? 나는 오늘이 기사를 보았습니다.이 기사는 후자를 옹호하고 열거 형에 대한 몇 가지 좋은 점을 논의합니다 : http://gamesfromwithin.com/stupid-c-tricks-2-better-enums .
작업 할 때이 예에서 (2) 내에서 클래스, 그것은뿐만 코드에 가장 열거입니다 Car::Color
, 아니면 그냥 것 Color
충분? ( Color
글로벌 네임 스페이스에 선언 된 또 다른 열거 형 이있는 경우를 대비하여 전자가 더 낫다고 가정합니다 . 적어도 우리는 참조하는 열거 형에 대해 명시 적입니다.)
Car::Color getColor()
하지만 이미 지정자가void Car::setColor(Color c)
있기 때문입니다setColor
.