在类构造函数中初始化std :: classes类

时间:2015-11-15 00:03:14

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

我正在尝试在另一个类的构造函数中初始化std ::对象数组。似乎聚合初始化应该在这里工作,但我无法弄清楚适当的语法。我该怎么做呢?

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;
}

1 个答案:

答案 0 :(得分:4)

你只需要一对额外的大括号:

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

或者您可以用括号替换括号:

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