我有一个网格,我想将其传递给另一个显示它的函数。但是,我似乎无法弄清楚如何声明该函数,多维数组通过引用传递给该函数。
void foo(bool[][]&); //INCORRECT: how is a correct way to declare this function?
// rest of code :
int main(){
bool grid[50][50] = {false};
foo(grid);
return 0;
}
void foo(bool& grid[][]){
// do things
}
这应该是一个初级问题,但我在寻找解决方案时遇到了很多麻烦。
最佳答案
对二维数组类型的引用如下所示:
T (&)[N][M]
所以你想要:
void foo(bool(&)[50][50]);
请注意,必须指定尺寸。对于函数定义,它看起来像:
void foo(bool (&grid)[50][50]) {
如果您需要能够将该函数用于各种大小的二维数组,您可以将其作为维度上的模板:
template <std::size_t N, std::size_t M>
void foo(bool(&)[N][M]);
模板将为您传递给它的每种大小的数组实例化。
关于c++ - 如何声明通过引用传递多维数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21145749/