現在、for ループから抜け出すために、変数「breakOK」を使用した非常に単純なチェックを使用しようとしています。パズル行列の現在の値が 46 に設定されているという条件が満たされると、関数が呼び出されて breakOK が 1 に設定され、ループから抜け出すことができます。ただし、以下のコードの if ステートメントで breakOK を使用すると、次のエラーが発生します。
sudoku.cc:482:13: error: 'breakOK' was not declared in this scope
sudoku.cc:485:11: error: 'breakOK' was not declared in this scope
Guess を同じ方法で宣言し、後でコード内で Guess を使用してもスコープ エラーが発生しないため、これは非常に奇妙です。また、ループ内で breakOK を 1 に設定しても、コンパイラは文句を言いません。どんな助けでも大歓迎です、私はこれにあまりにも長い間立ち往生しています!
int Guess = 0; // will be set to a value if a guess is ok
int breakOk = 0; // will be set to 1 if breaking out of loops is necessary
for (int row = 0; row < 9; row++)
{
for (int col = 0; col < 9; col++)
{
if (puzzle.matrix[row][col].currentValue == 46)
{
Guess = guessValues(row, col, puzzle, tried, allowed);
breakOk = 1;
}
if (Guess != 0)
{
tried[row][col].tries.push_back(Guess);
//puzzle.decide(row, col, Guess);
puzzle.matrix[row][col].currentValue = Guess;
}
if (breakOK == 1) // line 482
break;
}
if (breakOK == 1) // line 485
break;
}