c++ - 在类构造函数中初始化类的 std::array

标签 c++ c++11 initializer-list stdarray

我正在尝试在另一个类的构造函数中初始化对象的 std::array。似乎聚合初始化应该在这里工作,但我想不出合适的语法。我该怎么做?

class A {
        const int a;
public:
        A(int an_int) : a(an_int) {}
};

class B {
        std::array<A,3> stuff;
public:
        B() :
        stuff({1,2,3}) // << How do I do this?
        {}
};

int main() {
        B b;
        return 0;
}

最佳答案

你只需要一副额外的牙套:

B() : stuff({{1,2,3}}) {}
            ^       ^

或者你可以用大括号代替圆括号:

B() : stuff {{1,2,3}} {}
            ^       ^

关于c++ - 在类构造函数中初始化类的 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714866/

相关文章:

c++ - T树对象;使用绘图选项来绘制差异直方图

c++ - 在初始化列表中使用 this

c++ - 给定 int **p1 和 const int**p2 p1 == p2 格式正确吗?

使用 lambda 的 c++11 排序列表

c++ - 什么语言规则允许 C++11 推断这是一个 initializer_list 对?

c++ - 当在 std::list<shared_ptr> 的 C++14 初始化列表中间抛出时,GCC(但不是 Clang)下的内存泄漏

c++ - 在不同进程之间传输 cv::Mat 对象的最佳方式是什么?

c++ - make_shared "evidence"与默认构造

c++ - 当一个 xvalue 绑定(bind)到一个 const 左值引用时,它的生命周期是否会延长?

c++ - 如何使用初始化列表构造 std::array 对象?