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

标签 c++ arrays constructor initializer-list

我的类 Matrix4x4 有一个构造函数,它接受 9 个值并通过初始化列表将它们复制到内部 T value[4][4] 成员中。但是,它不编译,我不完全确定为什么。具体来说,该错误表示:数组初始化需要用大括号括起来的初始化列表

我使用的是 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 } }
{
}

关于c++ - 数组初始化需要一个大括号括起来的初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34703441/

相关文章:

c - 如何计算 N 维数组的元素地址

java - 将继承参数从父类(super class)更改为子类

c++ - 我如何从 C++ 中的 xml 中读取?

c++ - 为什么下面的代码会崩溃?

c - C中变量定义长度的数组如何存储在内存中?

constructor - TypeScript 中的异步构造函数?

具有多重继承的 C++ 构造函数重载解决方案

C++ 函数接受指针和引用

c++ - 关于类互动的问题

javascript - 将 OR 分割字符串数组转换为数组的各个组