1. ホーム
  2. C++

[C++]switch文からこのケースラベルにジャンプできない

2022-02-25 03:40:39
<パス
  switch (i) {
   case 1:
        disk d = tower1.pop();
       break;
   case 2:
        disk d = tower2.pop();
       break;
  case 3:
        disk d = tower2.pop();
       break;
   }


SEP lab3では、switch文からこのケースラベルにジャンプできないというエラーが報告されました。

このクエリには、あるケースで宣言された変数は、明示的に{}ブロックを使用しない限り、後続のケースでも見えるという情報がありますが、初期化コードは別のケースに属するため、初期化されません。

ここではほとんどcase2に飛ぶようなものですが、ディスクdの初期化はすでに上のケースで行われています。初期化を先頭に置いて、以下のように修正します。

       disk d;
       switch (from) {
       case 1:
            d = tower1.pop();
           break;
       case 2:
            d = tower2.pop();
           break;
      case 3:
            d = tower2.pop();
           break;


参考
https://stackoverflow.com/questions/5685471/error-jump-to-case-label