具有构造函数的对象数组

时间:2014-04-25 10:46:06

标签: c++ arrays debugging constructor

我的课程名为Novel。我可以声明如下所述的对象数组:

Novel obj;

但问题是Novel有构造函数,我想为数组的所有索引调用该怎么做。我试过跟随,但它不起作用。

Novel obj(i,n)[2];

2 个答案:

答案 0 :(得分:4)

您需要使用一个使用动态分配的适当容器来推迟构建单个元素。

std::vector<Novel> objs(2, Novel(i,n));

答案 1 :(得分:0)

不幸的是,C ++语言没有提供这种功能。分配了数组,但默认情况下它们根本没有初始化。如果它们被分配在静态存储中,则会被零填充;你可以给一个支撑初始化器;并且您可以提供默认构造函数来初始化每个值。你不能做的是用任何其他构造函数初始化一个数组。

要达到类似的效果,您必须从不同的角度处理问题。基本上,你可以: - 编写一个宏或模板,它既可以分配数组,也可以在封面下的每个元素上调用构造函数,或者 - 使用数组语义创建一个对象,它可以按照您喜欢的方式初始化。

内置集合类通常是最佳解决方案。例如,std :: vector提供填充,范围和复制构造函数以及数组语义。其中一个答案提供了一个例子,但有几种方法可以做到。

std::vector<Novel> objs(2, Novel(i,n));

它不是一个数组,但它应该做你需要的。