C ++ Reversi程序的问题

时间:2014-03-08 02:30:49

标签: c++ arrays class reversi

我在使用黑白棋游戏的C ++程序课时遇到了麻烦。基本上我的问题是在退出函数后尝试获取要更新的2D数组(私有类变量)。该数组被声明为类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 ++和类的新手,并没有真正理解指针等。如何让电路板更新并在功能之间保持这种状态?任何反馈都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:3)

内部
void Board::CreateBoard()
你声明了一个用char Board[BoardSize][BoardSize]填充的局部变量- 但是在你的身上 void Board::PrintBoard()
我想你正在调用类中定义的char Board[MAX_SIZE][MAX_SIZE]

所以,你设置一个局部变量并打印你没有设置的类变量,因此输出很奇怪。