여기에는 몇 가지 방법이 있습니다. 한 가지 방법은 열거 형 랩 및 글로벌 네임 스페이스 오염의 값을 방지하기 위해 네임 스페이스를 사용하는 것입니다 (컴파일러가 지원하는 경우)
가
namespace direction {
enum direction {
LEFT,
RIGHT,
UP,
DOWN,
NONE
};
}
namespace color {
enum color {
RED,
GREEN,
BLUE,
NONE
};
}
당신은 또한 새로운 C++ (11)의 방법을 사용할 수 있습니다 및 사용 "강력한 형식의 열거는 "
enum class direction {
LEFT,
RIGHT,
UP,
DOWN,
NONE
};
enum class color {
RED,
GREEN,
BLUE,
NONE
};
두
은 구문
direction::NONE
또는
color::NONE
에 의해 사용될 수 있지만, 한 가지 중요한 차이가있다. 첫 번째 경우 열거 형은 여전히 암시 적으로 int로 캐스팅됩니다. 이것은 당신이
int foo = direction::NONE;
을 쓸 수 있다는 것을 의미 모든 것이 괜찮습니다.
foo가 방향과 동일한 유형이 아니기 때문에 두 번째 경우 컴파일러 오류가 발생합니다. 당신은 또는 당신을 위해 작동하지 않을 수도 있습니다
direction foo = direction::NONE;
을 수행하면이 문제를 해결할 수 있습니다. 그것을 int로 형변환해야한다면, static_cast<int>(foo)
을 사용하여 정수형을 얻을 수 있습니다.
감사합니다. 첫 번째 방법은 지금 당장 만들고있는 것에 더 효율적으로 보이므로 계속 사용하겠습니다. – JorensM