2010年5月8日土曜日

C++のエラー:error C2360: 'hoge' の初期化が 'case' ラベルによって行われませんでした

今日出たエラーなんですけどswitch文のcase内で変数定義と初期化を同時に行おうとしたらでました。
コードは
switch (_type) {
    case 1:
        const int hoge = 1; // これがダメらしい
         break;
}
こんな感じです。昔同じエラーを経験したことがあったのですぐ解決しました。
解決方法はcaseに{}をつけるだけです。
switch (_type) {
    case 1: { // ←ココ
        const int hoge = 1; 
         break;
    } // ←ココ
}
修正するとこんなかんじです。
どうしてダメなのかはよく分りません、C言語の仕様なのかな?

0 件のコメント:

コメントを投稿