在实现Matrix4
-class 模板(表示 4 x 4 矩阵)时,我遇到了此类中构造函数的问题。我试图为多维数组(好吧,在这种情况下,二维数组又名矩阵)声明有效的构造函数,但没有这样做。这是我对多维数组的左值和右值引用的构造函数:
Matrix4(T (&matrix_)[4][4]);
Matrix4(T (&&matrix_)[4][4]);
这两种声明似乎都是可以接受的,但是调用采用右值引用的构造函数并不能按预期工作:
// Works:
float matrix__[4][4] = {{0}};
Matrix4<float> matrix1__ = matrix__;
// Does not work:
Matrix4<float> matrix2__ = {
{0, 0, 7, 0},
{1, 0, 5, 0},
{0, 0, 4, 0},
{0, 0, 0, 2}
};
从一段不起作用的代码中,我收到以下错误:
错误:无法将 '{{0, 0, 7, 0}, {1, 0, 5, 0}, {0, 0, 4, 0}, {0, 0, 0, 2}}' 从 ' ' 到 'Matrix4'
那么,如何为多维数组的右值引用提供有效的构造函数呢?