C++ 另一个类中具有构造函数的对象数组

C++ 另一个类中具有构造函数的对象数组,c++,class,constructor,C++,Class,Constructor,如果有一个类的构造函数要在另一个类的构造函数中初始化,我们会执行以下操作: Class A{ A(int arg):a(arg); int a; }; Class B{ B(int arg):A_obj(arg); A A_obj; } Class B{ B(int arg1,int arg2); A *A_obj//Array of objects of A of size arg2; } 我遇到过这样的情况, Class A{ A(int arg):a(arg); int

如果有一个类的构造函数要在另一个类的构造函数中初始化,我们会执行以下操作:

Class A{
 A(int arg):a(arg);
 int a;
};
Class B{
 B(int arg):A_obj(arg);
 A A_obj;
}
Class B{
 B(int arg1,int arg2);
 A *A_obj//Array of objects of A of size arg2;
}
我遇到过这样的情况,

Class A{
 A(int arg):a(arg);
 int a;
};
Class B{
 B(int arg):A_obj(arg);
 A A_obj;
}
Class B{
 B(int arg1,int arg2);
 A *A_obj//Array of objects of A of size arg2;
}
除了在serparate函数中初始化外,是否有任何方法可以使用构造函数初始值设定项来完成此操作??还有其他优雅的方式可以处理这个问题

谢谢

编辑:我希望在B的构造函数初始值设定项中有某种循环功能

编辑:科里的回答解决了这个问题。我想知道我们是否可以进一步将迭代值作为输入参数传递给A_obj数组中A的每个实例

class A{
 A(int arg,std::string n);
 int a;
 std::string name;
}
A_obj(arg2,A(arg1,“Name”+str(迭代器))行上的某些内容

解决方案(感谢Cory)

#包括
#包括
#包括
甲级{
公众:
A(intarg,std::stringn):A(arg),name(n){};
INTA;
std::字符串名;

void sayhi(){std::cout我建议将原始数组更改为
std::vector

class B{
 B(int arg1,int arg2);
 std::vector<A> A_obj;
};
这将使用默认初始化的
A
对象的数量来调整向量的大小

如果希望每个
A
都用
arg1
初始化,则使用另一个向量构造函数

B::B(int arg1, int arg2) : A_obj(arg2, A(arg1)) {}
要将不同的值传递给每个对象,需要在构造函数体中执行此操作

B::B(int arg1, int arg2)
{
    A_obj.reserve(arg2);
    for (std::size_t i = 0; i < arg2; ++i)
    {
        A_obj.emplace_back(arg1, "Name" + std::to_string(i));  // create new A object and add to vector
    }
}
B::B(int arg1,int arg2)
{
A_obj.储备金(arg2);
对于(std::size_t i=0;i您是否在运行时问如何设置数组大小?C++中不允许这样做。抱歉,我的意思是要通过“Neo”来分配。谢谢,我不能让A的构造函数接受arg1@Some_guy如果您想通过
arg1
,然后查看我答案底部的编辑,您可以创建
arg2
对象编号s、 其中每一个都是一个由参数arg1构建的
a
的副本,这太棒了……我想知道是否有可能进一步将一个迭代数与arg1一起传递(很抱歉,在我发布的问题中没有表示这一点)。比如a_obj[0]->a(arg1,0),a_obj[1]->a(arg1,1)@有些人说,你不能在成员初始化列表中这样做,但你可以在构造函数体中这样做。请参阅最下面的编辑。