I would like to convert an int
to a C++11 scoped enum value. For example, I may read in integer values from a database or XML file and convert these to scoped enum values within my C++ application.
What is the best way to deal with integer values that are not defined within the scoped enum?
Consider the following code, which runs on 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 output is:
The value of n is: 3
However, 3 is not a predefined constant value of Fruit
. Is the above code correct C++11?