【发布时间】:2019-12-30 05:00:03
【问题描述】:
当我创建一个辅助函数来打印当前棋盘(二维数组)时,我正在学习 c++ 并实现生命游戏。我似乎无法将数组传递给函数,因为我收到错误“候选函数不可行:第三个参数没有从 'char [rows][cols]' 到 'char (*)[cols]' 的已知转换。”如果有帮助,我将使用 Xcode 作为 ide。
void printArray(int rows, int cols, char board[rows][cols]){
for(int r = 0; r < rows; r++){
for(int c = 0; c < cols; c++){
cout << board[r][c];
cout << " ";
}
cout << "\n";
}
}
int main(){
char board[5][5];
for(int r = 0; r < 5; r++){
for(int c = 0; c < 5; c++){
board[r][c] = 0;
}
}
printArray(5, 5, board);
return 0;
}
我尝试将参数切换到不同的东西,例如 char **board、char board[][cols]、char (*board)[cols]。甚至投射我的输入板会导致其他错误。
【问题讨论】:
-
这能回答你的问题吗? Passing a 2D array to a C++ function
-
你应该首先避免使用内置数组。如果您使用
std::vector,则不会出现此问题。 -
@J.Doe 我已经试过了,但没用
-
@walnut 是的,我现在意识到自己的错误,但我想我还是想办法安息吧。
-
您在此处使用的技巧
void printArray(int rows, int cols, char board[rows][cols])在 C 中有效,并可能在 C++ 中进行扩展,但要在 C++ 中完全兼容,所有数组维度都必须是常量。
标签: c++ arrays xcode multidimensional-array parameters