Бих искал да преобразувам int
в стойност на enum с обхват на C++11. Например, мога да прочета целочислени стойности от база данни или XML файл и да ги преобразувам в стойности enum с обхват в моето C++ приложение.
Кой е най-добрият начин за справяне с целочислени стойности, които не са дефинирани в рамките на enum с обхват?
Помислете за следния код, който се изпълнява на 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?