我的课程名为Novel
。我可以声明如下所述的对象数组:
Novel obj;
但问题是Novel
有构造函数,我想为数组的所有索引调用该怎么做。我试过跟随,但它不起作用。
Novel obj(i,n)[2];
答案 0 :(得分:4)
您需要使用一个使用动态分配的适当容器来推迟构建单个元素。
std::vector<Novel> objs(2, Novel(i,n));
答案 1 :(得分:0)
不幸的是,C ++语言没有提供这种功能。分配了数组,但默认情况下它们根本没有初始化。如果它们被分配在静态存储中,则会被零填充;你可以给一个支撑初始化器;并且您可以提供默认构造函数来初始化每个值。你不能做的是用任何其他构造函数初始化一个数组。
要达到类似的效果,您必须从不同的角度处理问题。基本上,你可以: - 编写一个宏或模板,它既可以分配数组,也可以在封面下的每个元素上调用构造函数,或者 - 使用数组语义创建一个对象,它可以按照您喜欢的方式初始化。
内置集合类通常是最佳解决方案。例如,std :: vector提供填充,范围和复制构造函数以及数组语义。其中一个答案提供了一个例子,但有几种方法可以做到。
std::vector<Novel> objs(2, Novel(i,n));
它不是一个数组,但它应该做你需要的。