Comment convertir un int en une énumération en C++?
Par exemple:
_enum Test
{
A, B
};
int a = 1;
_
Comment convertir a
en type _Test::A
_?
int i = 1;
Test val = static_cast<Test>(i);
Test e = static_cast<Test>(1);
Votre code
enum Test
{
A, B
}
int a = 1;
Solution
Test castEnum = static_cast<Test>(a);
Test castEnum = static_cast<Test>(a-1);
va lancer un A. Si vous ne voulez pas le sous-produit 1, vous pouvez redéfinir enum
:
enum Test
{
A:1, B
};
Dans ce cas, `Test castEnum = static_cast (a); ' pourrait être utilisé pour lancer un à A.
Etant donné la question finale, "comment convertir un en type Test::A
" plutôt que d'être rigide à propos de l'exigence d'avoir un cast, et de répondre plusieurs années en retard, cela semble juste une question populaire, personne d’autre ne semble avoir mentionné l’alternative, selon la norme C++ 11:
5.2.9 Coulée statique
... une expression
e
peut être explicitement convertie en un typeT
à l'aide d'unstatic_cast
de la formestatic_cast<T>(e)
si la déclarationT t(e);
est bien formée, pour certains inventé variable temporairet
(8.5). L’effet d’une telle conversion explicite est identique à celui de la déclaration et de l’initialisation, puis de l’utilisation de la variable temporaire comme résultat de la conversion.
Par conséquent, utiliser directement le formulaire t(e)
fonctionnera également.
auto result = Test(a);