如何初始化没有默认构造器的对象的成员数组?

How can I initialise a member array of objects that don't have a default constuctor?

本文关键字:对象 成员 数组 构造器 默认 初始化      更新时间:2023-10-16

我想知道是否有人能告诉我如何初始化对象的成员数组,在对象没有默认构造函数(即需要参数)的情况下。

例如:

class Foo
{
public:
   Foo() : 
      memberArray{bar(1), bar(3), bar(2)}   // **The compiler doesnt like this** 
   {}
private:
   Bar memberArray[3];
};

struct Bar
{
   Bar(std::int32_t param1) {  }
}

我正在使用GCC 4.6.1,并编译为c++11。有人能指出我错在哪里吗?(顺便说一句。请不要建议动态分配内存,因为我没有…)

你有几个问题:不一致的大小写,在声明之前使用,缺少分号,缺少include。这更接近了:

struct Bar
{
   Bar(int param1) {  }
};
class Foo
{
public:
   Foo() : 
      memberArray{Bar(1), Bar(3), Bar(2)}
   {}
private:
   Bar memberArray[3];
};