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)@有些人说,你不能在成员初始化列表中这样做,但你可以在构造函数体中这样做。请参阅最下面的编辑。