¿Cómo convertir int a enum en C++?
¿Cómo envío un int a una enumeración en C++?
Por ejemplo:
enum Test
{
A, B
};
int a = 1;
¿ Cómo convierto a
a tipo Test::A
?
int i = 1;
Test val = static_cast<Test>(i);
Test e = static_cast<Test>(1);
Tu codigo:
enum Test
{
A, B
};
int a = 1;
Solución:
Test castEnum = static_cast<Test>(a);
Desviando la pregunta final, "¿cómo convierto a a tipo? Test::A
" en lugar de ser rígido sobre el requisito de tener un yeso allí y responder con varios años de retraso solo porque parece ser una pregunta popular y nadie más ha mencionado la alternativa. , según el estándar C++11:
5.2.9 Lanzamiento estático
... una expresión
e
se puede convertir explícitamente a un tipoT
usando unastatic_cast
del formulariostatic_cast<T>(e)
si la declaraciónT t(e);
está bien formada, para alguna variable temporal inventadat
(8.5). El efecto de una conversión tan explícita es el mismo que realizar la declaración y la inicialización y luego usar la variable temporal como resultado de la conversión.
Por lo tanto, usar directamente el formulario t(e)
también funcionará, y es posible que lo prefieras por su claridad:
auto result = Test(a);