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

How do I initialize an array of a non-built-in type in a c++ 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?

首先为 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) }
  {};
};