构造函数具有参数的对象数组

时间:2013-09-22 16:54:05

标签: 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'值是不同的/动态的

2 个答案:

答案 0 :(得分:4)

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

这将创建一个n set个对象的向量(动态可调整大小的数组),每个对象都是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

答案 1 :(得分:0)

您可以创建一个不带参数的不同构造函数并初始化值,然后在循环中设置每个变量的值

set() {
    this.size = 0;
}

然后在for循环中使用直接绑定或getter / setter函数使用所需的size初始化每个元素。

for(int i = 0; i < n; i++) {
    s[i].size = value[i]; // or create a setter function
}
相关问题