열거 형을 노출하는 클래스가 있습니다. 그래서처럼 setter 함수의 값의 유효성을 확인하려고 :열거 형 유효성 검사
enum abc
{
X,
Y
};
int my_class::set_abc(abc value)
{
if(static_cast<int>(value) > static_cast<int>(Y))
return -1;
...
}
이되는 가치에 대해 유사한 검사가
내가 컴파일러가 완전히 수표를 제거하는 것을 볼 X. 이하 . 나는 그 이유를 봤 거든 C++에서 정수 변환에 대한 규칙을 설명하는 많은 페이지를 보았지만 enum을 int로 변환하거나 유효성을 검사하는 것에 대한 명확한 설명을 찾지 못했습니다.
이 작업을 수행하는 올바른 방법은 무엇입니까?