我可以通过我的int变量值获取枚举类变体吗?现在,我有这样的枚举类:
enum class Action: unsigned int { REQUEST, RETURN, ISSUANCE };
我需要从数据库值中获取此值(数据库返回unsigned int).如何最优化呢?现在,我只是为每个变体使用开关,但这是一个愚蠢.拜托,解释一下!
我非常喜欢这个开关,因为这意味着你可以添加一条default: assert(!"Bad value in database");
线.另一方面:
unsigned int ui = ... ; auto action = static_cast(ui);
也会工作.
您甚至可以编写一个通用的转换函数,该函数应该能够将任何枚举类转换为其基础类型(C++ 14):
templateconstexpr auto toUnderlyingType(E e) { return static_cast ::type>(e); }
用C++ 11
templateconstexpr auto toUnderlyingType(E e) -> typename td::underlying_type ::type { return static_cast ::type>(e); }