C++ 构造函数初始化子对象数组?
假设我在一个类中有几个对象,每个对象都需要用不同的值构造。我可以这样写:C++ 构造函数初始化子对象数组?,c++,constructor,C++,Constructor,假设我在一个类中有几个对象,每个对象都需要用不同的值构造。我可以这样写: class b { public: b(int num) { // 1 for a.b1, and 2 for a.b2 } }; class a { public: b b1; b b2; a() : b1(1), b2(2) { } }; 但是,如果这些多个对象存储在一个数组中,是否可以执行相同的操作 我的第一次尝试无法编译: class a { public
class b
{
public:
b(int num)
{
// 1 for a.b1, and 2 for a.b2
}
};
class a
{
public:
b b1;
b b2;
a() : b1(1), b2(2)
{
}
};
但是,如果这些多个对象存储在一个数组中,是否可以执行相同的操作
我的第一次尝试无法编译:
class a
{
public:
b bb[2];
a() : bb[0](1), bb[1](2)
{
}
};
你不能直接这样做;您需要初始化构造函数主体中的数组元素 数组的元素是在输入构造函数主体之前默认构造的。由于示例类
b
不是默认可构造的(即,它没有可以用零参数调用的构造函数),因此不能将b
数组作为成员变量
如果可以,您可以拥有在其他上下文中不可默认构造的类型的数组