我想知道是否有人能告诉我如何在对象没有默认构造函数(即需要参数)的情况下初始化成员对象数组。
例如:
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编译。谁能指出我哪里出错? (顺便说一句。请不要建议动态分配内存,因为我没有它。)
答案 0 :(得分:2)
你有几个问题:不一致的情况,声明前使用,缺少分号,缺少包含。这更接近:
struct Bar
{
Bar(int param1) { }
};
class Foo
{
public:
Foo() :
memberArray{Bar(1), Bar(3), Bar(2)}
{}
private:
Bar memberArray[3];
};