我在C++中编写了一个通用的矩阵类。我想能够从一个二维双数组中初始化一个矩阵。因为我正在使用模板,因此在编译时需要知道矩阵大小,所以我想确保给定大小的数组可以传递给构造函数。表示在代码是这样的:固定大小的多维数组参数
template<unsigned int M, unsigned int N>
class Matrix {
public:
Matrix(double (&values)[M][N]);
}
现在,来这里的奇数部分:像预期的下面的代码工作就像一个魅力:
double arr [3][3] = { {1,2,3},
{1,2,3},
{1,2,3} };
Matrix<3,3>* mat3x3p = new Matrix<3,3>(arr);
但传递数组时,匿名代码被打破:
Matrix<3,3>* mat3x3p = new Matrix<3,3>({ {1,2,3},
{1,2,3},
{1,2,3} });
这同样适用于施工通过作业。 确切的错误信息是:
no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘double (&)[3][3]’
尝试与矩阵(双(&值)[] [N]);' – 2012-03-20 17:30:37
那没有工作 – Paranaix 2012-03-20 17:43:15
对不起,我的坏。 '矩阵(const double(&values)[M] [N]);'应该工作。 – 2012-03-20 17:57:15