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