web-dev-qa-db-ja.com

intからenumクラス型への変換は可能ですか?

私はc ++言語を使用している状況で、平日のメソッドへの入力に1から7までの整数値を取得しています。私はstaric_castを使用してenumクラス型を整数に簡単に変換できますが、整数からenumへの変換は少し問題です。質問が発生しましたが、数値を列挙型クラス型に変換することは可能ですか?整数を生成した別のメソッドでは、平日の更新のために列挙型クラスの平日入力ベースのメソッドを呼び出す必要があるためです。この更新メソッドは、列挙型クラスタイプのみを受け取ります。つまり、列挙型クラスweekday {Monday = 1、。 。メソッドはvoid updateWeekday(weekday e)です。誰かがそれを手伝ってくれる?

7
A 786

はい、両方の方法で変換できます:intからenum classおよびenum classからint。この例は自明です:

enum class Color{Red = 1, Yellow = 2, Green = 3, Blue = 4};
std::cout << static_cast<int>(Color::Green) << std::endl; // 3
// more flexible static_cast - See Tony's comment below
std::cout << static_cast<std::underlying_type_t<Color>>(Color::Green) << std::endl; // 3
std::cout << (Color::Green == static_cast<Color>(3)) << std::endl; // 1
std::cout << (Color::Green == static_cast<Color>(2)) << std::endl; // 0

あなたはそれを自分で試すことができます ここ

2
tangy