在switch語句中使用強類型枚舉時,是否有避免顯式強制轉換爲int
的方法?具有強類型枚舉的開關語句
/// @desc an enumeration of the states that the session can be in.
enum class State
{
Created,
Connected,
Active,
Closed
};
State sesState = session->GetState();
switch (static_cast<int>(sesState))
{
case static_cast<int>(Session::State::Created):
// do stuff.
break;
case static_cast<int>(Session::State::Connected):
// do stuff.
break;
}
從n3242草案:
6.4.2 switch語句[stmt.switch]
2所述的條件應爲整體式,枚舉類型,或一個類類型的的爲此存在單個非顯式轉換函數爲整數或枚舉類型(12.3)。
是否枚舉類型包括強類型枚舉或者是他們不符合switch
陳述,因爲它們需要一個明確的轉換int
?
http://ideone.com/ZEJcs - 無需轉換即可編譯。 – 2012-01-30 10:17:41
[在C++ 0x中切換枚舉類]可能重複(http://stackoverflow.com/questions/6327223/switching-on-enum-class-in-c-0x) – lpapp 2013-12-01 16:36:54