C++ 使用变量作为参数将多维数组传递给函数

C++ 使用变量作为参数将多维数组传递给函数,c++,arrays,function,multidimensional-array,parameter-passing,C++,Arrays,Function,Multidimensional Array,Parameter Passing,很抱歉,如果这真的很容易解决或者是一个愚蠢的问题,但我最近才开始编程 基本上,在void main()中,我声明了一个2D数组,如下所示: void main() { const int grid = 5; array[grid][grid]; { 但是,我想将其传递到如下函数: void drawGrid(int grid, bool array[][]) { } 这将创建一个错误,因为第二个参数需要有一个数字。但这是一个问题,因为我主要使用变量声明数组 void drawGri

很抱歉,如果这真的很容易解决或者是一个愚蠢的问题,但我最近才开始编程

基本上,在void main()中,我声明了一个2D数组,如下所示:

void main()
{
  const int grid = 5;
  array[grid][grid];
{
但是,我想将其传递到如下函数:

void drawGrid(int grid, bool array[][])
{

}
这将创建一个错误,因为第二个参数需要有一个数字。但这是一个问题,因为我主要使用变量声明数组

void drawGrid(int grid, bool array[grid][grid])
{

}
将变量放入参数中不起作用

在参数中使用int变量网格时,如何将数组传递给此函数


我已经搜索了很多,并查看了与我有类似问题的人的答案,但我似乎不知道具体该怎么做。谁能告诉我如何解决这个问题,我会非常高兴,因为我已经努力解决这个问题将近两个小时了。谢谢。

您可以使用大小作为模板参数的函数模板

template <size_t grid>
void drawGrid(bool array[][grid])
{    
}

drawGrid(数组);

错误消息是什么?无论如何,我认为这只是一个简单的范围界定问题。只需将
网格
放在全局范围内。@cad“数组可能没有这种类型的元素”是指如果将参数保留为空。若你们把网格放在那个里,它肯定是一个范围问题。但是我不想全局声明这个变量(在我的课程中我们也不允许这样做),所以我必须用其他方式来做。如果这个方法正确的话,谢谢你,但是我只想知道函数模板与普通函数有何不同?是否没有办法将网格传递到普通函数中?在函数模板中,必须在编译时知道大小。因此,
bool数组[][grid]
是一个有效的声明。在常规函数中,直到运行时才知道大小。因此,
bool array[][grid]
不是有效的声明。好的,非常感谢,我现在明白了@Roixen注意,您可以同时指定这两个维度。这里的示例将接受所有
N
值的
bool[N][grid]
drawGrid(array);
drawGrid<grid>(array);