強型別列舉到Int 的隱式轉換
在C 中,強型態枚舉是相對較新的功能,與傳統的相比,它提供了增強的安全性枚舉。這些類型之間的一個區別是強型別枚舉不能隱式轉換為整數。此行為是有意防止意外轉換的。
但是,在某些情況下,您可能需要將強型別枚舉值轉換為整數。在這些情況下,您可以使用 static_cast 運算子。但是,您必須在轉換中明確指定基礎整數類型。
<code class="cpp">enum class b { B1, B2 }; int foo(int input) { return input; } int main(void) { int value = static_cast<int>(b::B2); // Explicit cast required std::cout << foo(value) << std::endl; }
如果您不想明確指定基礎類型,可以使用以下範本函數:
<code class="cpp">template <typename E> constexpr typename std::underlying_type<E>::type to_underlying(E e) noexcept { return static_cast<typename std::underlying_type<E>::type>(e); } int main(void) { std::cout << foo(to_underlying(b::B2)) << std::endl; // No explicit cast needed }</code>
透過使用此範本函數,您可以避免每次需要將強型別枚舉值轉換為整數時都必須指定基礎類型。它提供了更簡潔且可重複使用的解決方案。
以上是如何在 C 中將強型別枚舉轉換為整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!