如何通过C ++中的函数参数传递固定大小的初始值设定项列表的初始值设定项列表?

我正在制作一个矩阵类,希望用户能够像这样实例化矩阵:

Matrix<float, 2, 2> mat = { { 10, 20 }, { 30, 40 } };

我的Matrix类的定义如下:

template<typename T, unsigned int ROWS, unsigned int COLS>
class Matrix
{
public:
    Matrix(std::array<std::array<T, ROWS>, COLS> matrix)
    {
        // ...
    }
    // ...
};

但是,当我尝试实例化矩阵时,如上所述,我从编译器中收到“无法转换”错误。我不想使用初始化程序列表,因为如果用户使用错误的顺序定义矩阵,则希望触发编译时错误。有人为什么不起作用吗?如果可以的话,还有其他选择吗?

评论