для инициализации массива требуется список инициализаторов, заключенный в фигурные скобки

В моем классе 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 }
    })
{

}

person user112513312    schedule 10.01.2016    source источник
comment
Как определяется Matrix4x4::value?   -  person Violet Giraffe    schedule 10.01.2016


Ответы (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 } }
{
}
person R Sahu    schedule 10.01.2016