C ++奇怪的错误,变量没有在范围内声明,当它显然是

时间:2012-07-13 00:42:12

标签: c++ scope

我目前正在尝试使用变量“breakOK”进行非常简单的检查,以便打破for循环。如果满足我的拼图矩阵中的当前值设置为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,并且在我的代码中稍后使用时我没有得到范围错误!此外,当我在循环中将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;
}

3 个答案:

答案 0 :(得分:4)

您声明breakOk,但请检查breakOK。注意OK中的大写字母K。

答案 1 :(得分:2)

这是因为你的变量是breakOk而你正在引用breakOK

答案 2 :(得分:2)

breakOKbreakOk不同。在k上查看您的案例。