如何在c ++构造函数初始化列表中初始化非内置类型的数组?

时间:2017-12-07 22:27:21

标签: c++ arrays constructor initializer-list

在C ++中,我试图在构造函数初始化列表中初始化非内置类型的数组。从代码开始:

class bar {
  int i1,i2;
public:
  bar(i1,i2);
}
class foo {
  bar bar1,bar2;
public:
  foo(int a, int b, int c, int d) : bar1(a,b),bar2(c,d) {};
}

我想用数组替换bar1和bar2:

bar allbars[2];

如何更改初始化列表以初始化allbars?

1 个答案:

答案 0 :(得分:0)

首先为bar创建一个合适的构造函数。

class bar {
  int i1,i2;
public:
  bar(int one, int two)
  : i1(one)
  , i2(two)
  {};
};

class foo {
  bar allbars[2];
public:
  foo(int a, int b, int c, int d)
  : allbars{ bar(a,b), bar(c,d) }
  {};
};