我有一个简单的国际象棋引擎的代码:
int BOARD_SIZE = 8;
...
Piece* board[BOARD_SIZE][BOARD_SIZE];
board[0][0] = new Rook(0); ...
void ChessBoard::move(Piece* &board[][], position orig, position dest) { ... }
bool ChessBoard::isKingInCheck(Piece* &board[][], Player p) { ... }
但是,调用move(board, position p1, position p2)
不起作用 - 例如出现以下错误。
ChessBoard.hpp:20:47: error: declaration of ‘board’ as array of references
ChessBoard.hpp:20:48: error: expected ‘)’ before ‘,’ token
显然,我无法弄清楚这个调用的正确语法,但它是什么?我实际上已经恢复使用2-dim。使用向量向量的数组,我认为没有意义,因为容器的大小是常量而且不可扩展。
答案 0 :(得分:-1)
数组已作为指向第一元素的指针传递,因此尝试添加引用几乎肯定是没有意义的。您还需要指定大小(第一个除外,但没有理由将其删除)。
void ChessBoard::move(Piece * board[BOARD_SIZE][BOARD_SIZE], position orig, position dest)