自動將強型別列舉轉換為整數
在C 中,列舉有兩種:強型別枚舉與常規枚舉。常規枚舉可以隱式轉換為整數,而強型別枚舉需要明確轉換。這就提出了一個問題:是否有一種自動方法可以將強型別枚舉轉換為整數,而無需使用明確強制轉換?
答案是否定的,而且這是有意為之。強型別枚舉旨在防止隱式轉換為整數。本質上,編譯器確保您明確確認從枚舉值到整數的轉換。
但是,有一種解決方法可以避免在強制轉換中指定基礎類型。透過利用模板函數,我們可以抽像出強制型別轉換的型別規範。
template
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
return static_cast::type>(e);
}
透過這個模板函數,可以實現如下轉換:
std::cout 此方法消除了強制轉換中的顯式型別規範,簡化了轉換過程,同時維持了強型別枚舉的強制明確轉換所需的行為。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3