コンパイル時にこんなエラーがでました。
15: error: jump to case labelBCC(Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland)では、
12: error: crosses initialization of ‘std::string name’
case でローカル変数の初期化がとばされた(関数 main() )とエラーがでました。
■コード
ちなみに、コードは、
#include <iostream>
#include <string>
using namespace std;
int main(){
const char* strings[] = {"Wolfgang Amadeus Mozart",
"Johan Sebastian Bach",
"Ludwig van Beethoven",
"Johaness Brahms"};
for (unsigned int i=0; i< sizeof(strings)/sizeof(char*); i++){
switch (i){
case 1:
string name;
name = strings[i];
cout << name << ": Baroque." << endl;
break;
default:
cout << strings[i] << endl;
break;
}
}
}
■解決法
変数の初期化をswitchの外に出すとエラーは止まります。
ケースにはスコープがないから、すべてのケースで初期化されないとだめなんですね。
jump to case label crosses initialization of の意味
