我有一個暴露枚舉的類。我想檢查值的有效性在setter函數,就像這樣:檢查枚舉的有效性
enum abc
{
X,
Y
};
int my_class::set_abc(abc value)
{
if(static_cast<int>(value) > static_cast<int>(Y))
return -1;
...
}
沒有爲值是類似的檢查不到十
我看到,編譯器會完全刪除檢查。我有谷歌搜索的原因,並遇到了許多頁面解釋C++整數轉換的規則,但我不會找到任何關於將枚舉轉換爲整數或檢查有效性的澄清。
完成此操作的正確方法是什麼?