为什么在if语句中出现“使用未声明的标识符”错误? (C ++作业)

问题描述 投票:0回答:1

因此,我分配了一个使用2D数组按用户指定尺寸构建迷宫的任务。迷宫必须随机生成,并且还包括死角。然后,我必须编写一种方法来解决所述迷宫并打印出解决方案。我决定创建迷宫,方法是先在2D数组中填充0以表示墙壁,然后使用通过将0更改为1以刻画墙壁以表示有效路径的方法。下面只是我的方法和构造函数之一,因为在userLength语句中收到userWidthmazeif的“使用未声明的标识符”错误。我所有的其他方法都有使用相同变量的相似if语句,但没有给出任何错误。 isWithinDimensions用于检查空间是否未超出迷宫的范围。

我对C ++还是陌生的,如果对任何人来说这都是一场噩梦,我深表歉意,因为我敢肯定它可能会更高效,更干净,但是我正在尽力而为。此外,对于构造函数中do / while循环的任何帮助,或者如果我将其移至方法中以避免在构造函数中使用过多的方法,将不胜感激。同样,我对此很陌生。


bool isWithinDimensions(int x, int y){
  bool isValid = true;
  if(x<0 || x>userLength-1){
    isValid = false;
  }else if(y<0 || y>userWidth-1){
    isValid = false;
  }
  return isValid;
}

MazeSolver::MazeSolver(){
  int userLength = 0;
  int userWidth = 0;

  std:: cout << "Please enter the length you would like the maze to be:";
  cin >> userLength;
  std:: cout << "Please enter the width you would like the maze to be:";
  cin >> userWidth;
  int** maze = new int*[userLength];
  for(auto i=0;i<userLength;i++){
    maze[i] = new int[userWidth];
  }
  for(auto i=0;i<userLength;i++){
    for(auto j=0; j<userWidth;j++){
      maze[i][j] = 0;
    }
  }
  isValidStart();
    do{
      int a = x;
      int b = y;
      int direction  = rand() % 4;
      if(direction == 1){
        b = y+1;
      }else if(direction == 2){
        a = x+1;
      }else if(direction == 3){
        b = y-1;
      }else{
        a = x-1;
      }
      if(isValidPath(a,b) == true){
        maze[a][b] = 1;
      }
    }while(!isDone);

  }
c++ if-statement multidimensional-array compiler-errors scope
1个回答
0
投票

userLengthuserWidthmaze在您的功能范围内不存在。您应该考虑将所需的变量添加为参数。

例如

bool isWithinDimensions(int x, int y, int userLength, int userWidth){
  bool isValid = true;
  if(x<0 || x>userLength-1){
    isValid = false;
  }else if(y<0 || y>userWidth-1){
    isValid = false;
  }
  return isValid;
}
© www.soinside.com 2019 - 2024. All rights reserved.