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

时间:2011-12-27 15:06:00

标签: c++ c++11

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

例如:

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编译。谁能指出我哪里出错? (顺便说一句。请不要建议动态分配内存,因为我没有它。)

1 个答案:

答案 0 :(得分:2)

你有几个问题:不一致的情况,声明前使用,缺少分号,缺少包含。这更接近:

struct Bar
{
   Bar(int param1) {  }
};

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