【发布时间】:2011-05-09 02:29:07
【问题描述】:
有没有一种通用的方法将int 转换为enum 在C++ 中?
如果int 在enum 的范围内,它应该返回一个enum 值,否则抛出一个exception。有没有办法一般地写?应该支持多个enum type。
背景:我有一个外部 enum 类型并且无法控制源代码。我想将此值存储在数据库中并检索它。
【问题讨论】:
-
enum e{x = 10000};在这种情况下9999是否在enum的范围内? -
不,
9999不会倒下。 -
好问题。至于任何“为什么?”这将出现,让我说“反序列化” - 对我来说似乎足够了。我也很高兴听到
enum class的 C++0x 编译答案。 -
“范围”在这里是错误的词,可能是“域”?
-
boost::numeric_cast 如果值超出范围,则抛出正或负溢出异常。但不确定它是否也适用于枚举类型。你可以试试。