当前位置:  开发笔记 > 编程语言 > 正文

C++ 11如何通过int值获取枚举类值?

如何解决《C++11如何通过int值获取枚举类值?》经验,为你挑选了2个好方法。

我可以通过我的int变量值获取枚举类变体吗?现在,我有这样的枚举类:

enum class Action: unsigned int {
REQUEST,
RETURN,
ISSUANCE
};

我需要从数据库值中获取此值(数据库返回unsigned int).如何最优化呢?现在,我只是为每个变体使用开关,但这是一个愚蠢.拜托,解释一下!



1> Martin Bonne..:

我非常喜欢这个开关,因为这意味着你可以添加一条default: assert(!"Bad value in database");线.另一方面:

unsigned int ui = ... ;
auto action = static_cast(ui);

也会工作.



2> billz..:

您甚至可以编写一个通用的转换函数,该函数应该能够将任何枚举类转换为其基础类型(C++ 14):

template
constexpr auto toUnderlyingType(E e) 
{
    return static_cast::type>(e);
}

用C++ 11

template
constexpr auto toUnderlyingType(E e) -> typename td::underlying_type::type 
{
   return static_cast::type>(e);
}

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有