我有一个公开枚举的类。我正在尝试检查 setter 函数中值的有效性,如下所示:
enum abc
{
X,
Y
};
int my_class::set_abc(abc value)
{
if(static_cast<int>(value) > static_cast<int>(Y))
return -1;
...
}
有一个类似的检查值是否小于 X。
我看到编译器完全删除了检查。我已经在 Google 上搜索了这个原因,并遇到了很多解释 C++ 中整数转换规则的页面,但我找不到任何关于将枚举转换为整数或检查有效性的说明。
实现此目的的正确方法是什么?