数组初始化需要括号括起的初始化列表

时间:2016-01-10 08:16:46

标签: c++ arrays constructor initializer-list

我的班级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 }
    })
{

}

1 个答案:

答案 0 :(得分:4)

如果您可以访问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 } }
{
}