How to cast int to enum in C++?
How do I cast an int to an enum in C++?
For example:
enum Test
{
A, B
};
int a = 1;
How do I convert a
to type Test::A
?
Solution 1:
int i = 1;
Test val = static_cast<Test>(i);
Solution 2:
Test e = static_cast<Test>(1);
Solution 3:
Your code
enum Test
{
A, B
}
int a = 1;
Solution
Test castEnum = static_cast<Test>(a);
Solution 4:
Spinning off the closing question, "how do I convert a to type Test::A
" rather than being rigid about the requirement to have a cast in there, and answering several years late only because this seems to be a popular question and nobody else has mentioned the alternative, per the C++11 standard:
5.2.9 Static cast
... an expression
e
can be explicitly converted to a typeT
using astatic_cast
of the formstatic_cast<T>(e)
if the declarationT t(e);
is well-formed, for some invented temporary variablet
(8.5). The effect of such an explicit conversion is the same as performing the declaration and initialization and then using the temporary variable as the result of the conversion.
Therefore directly using the form t(e)
will also work, and you might prefer it for neatness:
auto result = Test(a);