数组初始化需要一个大括号括起来的初始化列表

array initialization requires a brace-enclosed initializer list

我的 class Matrix4x4 有一个构造函数,它接受 9 个值并通过初始化列表将它们复制到内部 T value[4][4] 成员中。但是,它不编译,我不完全确定为什么。具体来说,错误说:array initialization requires a brace-enclosed initializer list.

我正在使用 Visual Studio 2015.

template<typename T>
Matrix4x4<T>::Matrix4x4(
    T aa, T ba, T ca,
    T ab, T bb, T cb,
    T ac, T bc, T cc
    )
    : value({
        { aa, ba, ca,  0 },
        { ab, bb, cb,  0 },
        { ac, bc, cc,  0 },
        { 0,  0,  0,  1 }
    })
{

}

如果您可以使用 C++11 编译器,这里有一个解决方案。

从值的初始值设定项中删除 ()。使用:

Matrix4x4::Matrix4x4(T aa, T ba, T ca,
                     T ab, T bb, T cb,
                     T ac, T bc, T cc)
   : value{ { aa, ba, ca,  0 },
            { ab, bb, cb,  0 },
            { ac, bc, cc,  0 },
            { 0,  0,  0,  1 } }
{
}