¿Cómo convertir int a enum en C++?

Resuelto user1509260 asked hace 12 años • 0 respuestas

¿Cómo envío un int a una enumeración en C++?

Por ejemplo:

enum Test
{
    A, B
};

int a = 1;

¿ Cómo convierto aa tipo Test::A?

user1509260 avatar Jul 12 '12 20:07 user1509260
Aceptado
int i = 1;
Test val = static_cast<Test>(i);
Andrew avatar Jul 12 '2012 13:07 Andrew
Test e = static_cast<Test>(1);
bames53 avatar Jul 12 '2012 13:07 bames53

Tu codigo:

enum Test
{
    A, B
};

int a = 1;

Solución:

Test castEnum = static_cast<Test>(a);
user1515687 avatar Jul 12 '2012 13:07 user1515687

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 ese puede convertir explícitamente a un tipo T usando una static_castdel formulario static_cast<T>(e)si la declaración T t(e);está bien formada, para alguna variable temporal inventada t(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);
Tommy avatar Aug 15 '2019 21:08 Tommy