传递2D数组作为参数

时间:2015-10-21 21:49:48

标签: c++ arrays constructor

关于使用以2D数组作为参数的构造函数的语法,我遇到了一些问题。以下是一个这样的构造函数的示例:

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<float>' to 'float (*)[4]' for 1st argument”这一行是一个很大的线索,但我仍然坚持为什么clang ++将f解释为float (*)[4]而不是float[4][4]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

语法是

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

但更喜欢可复制的std::array<std::array<T, 4>, 4>