我正在写一个游戏,目前正在进行撤消移动。这应该是非常简单但我得到这个错误,似乎无法弄明白。 这是我的功能...
bb_undo(BBoard board){
board->score = board->previousScore;
board->boardDim = board->previousBoard;
}
这是董事会结构......
struct bboard {
char boardDim[MAX_ROWS][MAX_COLS];
int score;
int rows;
int cols;
char previousBoard[MAX_ROWS][MAX_COLS];
int previousScore;
};
我还应该补充一点,bboard是一个指针。 有人有什么想法吗? 感谢。
答案 0 :(得分:3)
数组没有赋值运算符。而不是这个陈述
board->boardDim = board->previousBoard;
您必须使用memcpy
答案 1 :(得分:3)
无法将阵列分配给。
您需要使用memcpy
,或者,因为结构可以分配给您,您可以定义
struct board
{
char cells[MAX_ROWS][MAX_COLS];
};
并更改bboard
struct bboard {
board boardDim;
int score;
int rows;
int cols;
board previousBoard;
int previousScore;
};
然后你可以写
bboard b;
b.previousBoard = b.boardDim;
但你需要
b.previousBoard.cells[x][y];
访问元素。
当然,您可以向board
添加访问者功能以消除这种烦恼:
struct board
{
char operator() (size_t r, size_t c) const { return cells[r][c]; }
char& operator() (size_t r, size_t c) { return cells[r][c]; }
char cells[MAX_ROWS][MAX_COLS];
};
所以你可以写
char value = b.previousBoard(x, y);
和
b.previousBoard(x, y) = 'x';