C++でintをenumにキャストする方法を教えてください。
例えば:
enum Test
{
A, B
};
int a = 1;
a
をTest::A
型に変換する方法を教えてください。
int i = 1;
Test val = static_cast<Test>(i);
Test e = static_cast<Test>(1);
あなたのコード
enum Test
{
A, B
}
int a = 1;
溶液
Test castEnum = static_cast<Test>(a);
Test castEnum = static_cast<Test>(a-1);
はaにキャストします。サブ構造1が必要ない場合は、enum
を再定義できます。
enum Test
{
A:1, B
};
この場合、「Test castEnum = static_cast(a);」 Aにキャストするために使用できます。
最後の質問である「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);