2016-01-10 246 views
2

我的类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

'Matrix4x4 :: value'是如何定义的? –

回答

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 } } 
{ 
} 
+0

谢谢..这么小的细微差别.. – Dan