2010年5月8日土曜日

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

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

0 件のコメント:

コメントを投稿