列挙型への代入

提供: Appmethod Topics
移動先: 案内検索

列挙型:インデックス への移動

列挙型に関する式の規則は厳しくなっています。ANSI C++ に厳密に準拠して,コンパイラを -A スイッチ付きで実行した場合,コンパイラはエラーメッセージを表示してその式の規則に従います。

整数を列挙型変数に代入するとエラーになります。

enum color
{
  red, green, blue
};
int f()
{
  color c;
  c = 0;
  return c;
}

関数へのパラメータとして整数を渡す場合も同様です。flag1|flag2 式の結果は int 型になることに注意してください。

enum e
{
  flag1 = 0x01,
  flag2 = 0x02
};
void p(e);
void f()
{
  p(flag1|flag2);
}

上記の例をコンパイルするには,flag1|flag2 式は列挙型の (e)(flag1|flag2) にキャストされなければなりません。