1

我在玩黑白棋游戏的 C++ 程序的类时遇到问题。基本上我的问题是尝试在退出函数后更新二维数组(这是一个私有类变量)。该数组被声明为 Board 类的私有变量,如下所示:(MAX_SIZE = 10,但数组大小由 main 中的第一个参数控制。)

private:
//array variable for the board
char Board[MAX_SIZE][MAX_SIZE];
int BoardSize;
};

这是我创建板的地方,将其设置为所有破折号开始。我用 cout 对其进行了调试,以验证它是否可以正常工作并且确实可以。

void Board::CreateBoard(){
char Board[BoardSize][BoardSize];

//Sets the board to be all dashes
for (int i=0; i < BoardSize; i++){
 for (int j=0; j < BoardSize; j++){
  Board[i][j] = '-';
  cout << Board[i][j] << " ";
  }
 }
}

这是 printBoard 函数,调用它时只会打印乱码。我怀疑这是因为在 CreateBoard() 函数结束后,电路板正在恢复到以前的状态。

void Board::PrintBoard(){
//Prints out the array board
for(int i=0;i < BoardSize;i++){
for(int j=0;j < BoardSize;j++){
  cout << Board[i][j];
  }
 }
}

我是 C++ 和类的新手,并不太了解指针等。我怎样才能让电路板更新并在功能之间保持这种状态?任何反馈将不胜感激,谢谢!

4

1 回答 1

3

在里面
void Board::CreateBoard()
你已经声明了一个char Board[BoardSize][BoardSize]你正在填充的局部变量-
但是在你的
void Board::PrintBoard()
我认为你正在调用char Board[MAX_SIZE][MAX_SIZE]类中的定义。

因此,您正在设置一个局部变量并打印您尚未设置的类变量,因此输出很奇怪。

于 2014-03-08T02:44:27.170 回答