向向量添加相同类型的多个指针

时间:2015-03-05 16:19:00

标签: c++ pointers vector

我有一个指针向量,我想在其中存储指向相同类型对象的指针

Parent * tempParent=new Parent();

vector<Parent *> parents;
for(int i=0;i<9;i++){
  tempParent.setAge(i);
  parents.push_back(tempParent);
}

这是什么让所有父母年龄都达到8岁。任何想法我怎么能让他们指向不同的对象,以便他们都有不同的年龄? 感谢

2 个答案:

答案 0 :(得分:4)

如果您想在Parent中存储9个std::vector个对象,则需要创建其中的9个。

你有多个问题的解决方案,你可以存储普通对象(而不是指针,因为你不需要存储指针,如果你不需要它们),例如:

std::vector<Parent> parents;
for (int i = 0; i < 9; ++i) {
  parents.push_back(Parent(i)); // assuming a Parent::Parent(int age) constructor
}

如果你真的想要指针,你肯定需要调用new 9次:

std::vector<Parent*> parents;
for (int i = 0; i < 9; ++i) {
  Parent* parent = new Parent(i);
  parents.push_back(parent);
}

请注意,如果你真的需要将它们包装在unique_ptr内的指针,那么这个向量是否对它们有所有权是个好主意:

std::vector<std::unique_ptr<Parent>> parents;
parents.push_back(std::unique_ptr<Parent>(new Parent(age));

答案 1 :(得分:0)

您需要创建9个不同的Parent对象,以便它们指向9个不同的对象。我认为此代码可以帮助您:

vector<Parent *> parents;
for(int i=0;i<9;i++)
{
    Parent * tempParent=new Parent();
    tempParent->setAge(i);
    parents.push_back(tempParent);
}