web-dev-qa-db-ja.com

C ++でintをenumにキャストする方法

C++でintをenumにキャストする方法を教えてください。

例えば:

enum Test
{
    A, B
};

int a = 1;

aTest::A型に変換する方法を教えてください。

187
user1509260
int i = 1;
Test val = static_cast<Test>(i);
198
Andrew
Test e = static_cast<Test>(1);
63
bames53

あなたのコード

enum Test
{
    A, B
}

int a = 1;

溶液

Test castEnum = static_cast<Test>(a);
20
user1515687

Test castEnum = static_cast<Test>(a-1);はaにキャストします。サブ構造1が必要ない場合は、enumを再定義できます。

enum Test
{
    A:1, B
};

この場合、「Test castEnum = static_cast(a);」 Aにキャストするために使用できます。

0
kosolapyj

最後の質問である「cast」の要件を厳しくするのではなく、「どのようにTest::Aに変換するのか」という質問に分かれて、数年後に答えるとC++ 11標準に従って、他の誰も代替案について言及していないようです。

5.2.9静的キャスト

...式eは、_static_cast<T>(e)形式のstatic_castを使用して明示的に型Tに変換できます。宣言T t(e);が整形式の場合、いくつかの一時変数t(8.5)を発明しました。このような明示的な変換の効果は、宣言と初期化を実行し、変換の結果として一時変数を使用することと同じです。

したがって、t(e)という形式を直接使用しても機能します。

auto result = Test(a);
0
Tommy