是的,您可以两种方式进行转换:int 到 enum class和enum class 到 int。这个例子应该是不言自明的:
enum class Color{Red = 1, Yellow = 2, Green = 3, Blue = 4};
std::cout << static_cast<int>(Color::Green) << std::endl; // 3
// more flexible static_cast - See Tony's comment below
std::cout << static_cast<std::underlying_type_t<Color>>(Color::Green) << std::endl; // 3
std::cout << (Color::Green == static_cast<Color>(3)) << std::endl; // 1
std::cout << (Color::Green == static_cast<Color>(2)) << std::endl; // 0
你可以在这里自己试试。
[编辑] 自 C++23 以来,我们将有可用std::to_underlying
的 (at <utility>
),这将允许我们编写:
std::cout << std::to_underlying(Color::Green) << std::endl; // 3