将int转换为C ++ 11范围的枚举

时间:2015-05-18 21:46:44

标签: c++ c++11 enums

我想将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?

0 个答案:

没有答案