我有一个指针 vector ,我想在其中存储指向相同类型对象的指针
Parent * tempParent=new Parent();
vector<Parent *> parents;
for(int i=0;i<9;i++){
tempParent.setAge(i);
parents.push_back(tempParent);
}
这是什么意思,它将所有 parent 的年龄设置为 8 岁。有什么想法可以让他们指向不同的对象,以便他们都有不同的年龄吗? 谢谢
最佳答案
如果您想在 std::vector
中存储 9 个 Parent
对象,那么您需要创建其中的 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
中是个好主意,前提是 vector 拥有它们的所有权:
std::vector<std::unique_ptr<Parent>> parents;
parents.push_back(std::unique_ptr<Parent>(new Parent(age));
关于c++ - 将多个相同类型的指针添加到 vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28882595/