在 C 中,強型別枚舉比傳統枚舉具有更高的型別安全性。然而,與傳統枚舉不同,強型別枚舉不能隱式轉換為整數型別。
要將強型別枚舉值E 轉換為整數型,需要明確強制轉換,如:
int i = static_cast(b::B2);
但是,如果枚舉的底層類型未知,則下列範本函數可以使用:
template
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
return static_cast::type>(e);
}
現在,無需明確指定基礎型別即可執行轉換:
std::cout 需要注意的是,這種轉換僅適用於強型別枚舉的值。如果向 to_underlying() 提供傳統的枚舉值,則會引發錯誤。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3