7
我想上的作用域-枚舉與該無符號整型切換:接通作用域枚舉
const enum struct EnumType : unsigned int { SOME = 1, MORE = 6, HERE = 8 };
我接收一個const unsigned int的參考,我:
作爲枚舉定義試圖根據枚舉值檢查該值。
void func(const unsigned int & num)
{
switch (num)
{
case EnumType::SOME:
....
break;
case EnumType::MORE:
....
break;
....
default:
....
}
}
這將導致一個語法錯誤:Error: This constant expression has type "EnumType" instead of the required "unsigned int" type.
現在,每個交換機上使用static_cast
,如:
case static_cast<unsigned int>(EnumType::SOME):
....
break;
case static_cast<unsigned int>(EnumType::MORE):
....
break;
修復語法錯誤,雖然在每種情況下,聲明沒有按鑄造看起來這不是一個好辦法。我是否真的需要在每種情況下施放,還是有更好的方法?
在我看來強類型枚舉的整點是,他們是......嗯,強類型,所以沒有隱式轉換。所以是的,你需要投。 編輯:我現在看到你不是問你是否需要施放,而是你是否需要施放每個案例。對不起這是我的錯。 – antred 2014-11-05 22:24:50