我想将int
转换为C ++ 11范围的枚举值。例如,我可以从数据库或XML文件读取整数值,并将它们转换为我的C ++应用程序中的作用域枚举值。
处理未在作用域枚举中定义的整数值的最佳方法是什么?
考虑以下代码,该代码在VS2013上运行。
#include <iostream>
enum class Fruit : int { Apple=0, Pear=1, Orange=2 };
int main(int argc, char* argv[])
{
int n=3;
Fruit fruit = static_cast<Fruit>(n);
std::cout << "The value of n is: " << static_cast<int>(fruit) << std::endl;
return 0;
}
输出是:
The value of n is: 3
但是,3不是Fruit
的预定义常量值。以上代码是否正确C ++ 11?