将二维数组作为参数传递

Posted

技术标签:

【中文标题】将二维数组作为参数传递【英文标题】:Passing a 2D array as an argument 【发布时间】:2015-10-21 21:49:47 【问题描述】:

我在使用将二维数组作为参数的构造函数的语法方面遇到了一些问题。这是一个这样的构造函数的示例:

template <class T>
Node<T>::Node(T d[4][4]) : data(d)     

我正在尝试按如下方式使用它:

float f[4][4] =   /* 2D array declaration */  ;
Node<float> myNode = Matrix4x4<float>((f));

我收到以下错误,经过大量搜索,我无法找出问题的根本原因:

error: no matching constructor for
      initialization of 'Node<float>'
      Node<float> myNode = Node<float>((f));
                   ^     ~~~~~~~~~~~~~~~~~~~~~
src/Node.h:33:5: note: candidate constructor not viable:
      no known conversion from 'Node<float>' to
      'float (*)[4]' for 1st argument
      Node(T d[4][4]);

显然“no known conversion from 'Node&lt;float&gt;' to 'float (*)[4]' for 1st argument”行是一个很大的线索,但我不知道为什么 clang++ 将 f 解释为 float (*)[4] 而不是 float[4][4]

非常感谢任何帮助。

【问题讨论】:

因为原始数组不能按值传递给函数。数组参数始终被视为指向元素类型的指针。 【参考方案1】:

语法是

void f(T (&d)[4][4])

但更喜欢可复制的std::array&lt;std::array&lt;T, 4&gt;, 4&gt;

【讨论】:

以上是关于将二维数组作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

如何将二维数组作为函数参数

无法使用双指针作为函数参数传递二维数组[重复]

java 如何将二维数组的一列作为参数传进去 求代码

二维数组指针作为函数参数传递

C语言中如何将二维字符数组作为函数参数引用传递

我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]