通过引用传递数组作为函数参数

时间:2014-01-25 17:44:07

标签: c++

我有一个简单的国际象棋引擎的代码:

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。使用向量向量的数组,我认为没有意义,因为容器的大小是常量而且不可扩展。

1 个答案:

答案 0 :(得分:-1)

数组已作为指向第一元素的指针传递,因此尝试添加引用几乎肯定是没有意义的。您还需要指定大小(第一个除外,但没有理由将其删除)。

void ChessBoard::move(Piece * board[BOARD_SIZE][BOARD_SIZE], position orig, position dest)