我有一个指针向量,我想在其中存储指向相同类型对象的指针
Parent * tempParent=new Parent();
vector<Parent *> parents;
for(int i=0;i<9;i++){
tempParent.setAge(i);
parents.push_back(tempParent);
}
这是什么让所有父母年龄都达到8岁。任何想法我怎么能让他们指向不同的对象,以便他们都有不同的年龄? 感谢
答案 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);
}