c++ - 构造函数有参数的对象数组

标签 c++

我想要一个对象数组。 每个对象都有一个带有一个参数的构造函数。 我的对象数组初始化:

set s[]=new set[n]; // creates an array of n objects of class set

但是,它说我不能这样做,因为我的构造函数需要一个参数。 我的构造函数:

set(int size){}

我已经理解了这个问题,但想不出一个好的解决方案。 我能做的是分别初始化每个对象:

set s1(size);
set s2(size); //& so on.....

或者从构造函数中删除参数......两种解决方案都不太令人满意

谁能帮我找到更好的解决方案?

注意:每个对象的'size'值是不同的/动态的

最佳答案

#include <vector>
...
std::vector<set> s(n, set(x,y,z));

这将创建一个包含 n 个 set 对象的 vector (一个可动态调整大小的数组),每个对象都是 set(x,y,z) 的一个拷贝。如果你想为不同的元素使用不同的构造函数,或者使用不同参数的相同构造函数:

std::vector<set> s;      // create empty vector
s.push_back(set(x,y,z));
s.push_back(set(y,z,x));
...
... // repeat until s.size() == n

关于c++ - 构造函数有参数的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946324/

相关文章:

c++ - 一次又一次......指向成员函数的指针

允许任意类输入的C++函数

c++ - OpenCV 与 std::vector 不兼容? (_crtIsValidHeapPointer 错误)

c++ - 检查windows shell是否加载完启动程序

c++ - 如何在模板类中使用 std::map 迭代器?

Eclipse 中的 C++ 错误

c++ - 如何根据用户输入创建模板对象?

c++ - 调试/发布中的控制台程序

c++ - 插入排序 > 通过引用传递的数组中不可变值的问题

c++ - 尝试打开 TCP 套接字时出错 - C++