[C++] case でのローカル変数の定義 --- jump to case label crosses initialization of

■エラー
コンパイル時にこんなエラーがでました。
15: error: jump to case label
12: error:   crosses initialization of ‘std::string name’
BCC(Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland)では、
  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 の意味