コンパイル時にこんなエラーがでました。
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 の意味