我正在尝试删除包含对指针的引用的完整 vector 。
我已经在 stackoverflow 中找到了关于这个的线程,但我的情况有点不同,我相信,当其他人阅读这个问题时,他们会受益。
我的类中有内部类,以隐藏初始化和变量的实现。因此,当我尝试使用它时,我必须创建指向 vector 的指针。在这里,我写了如何从 vector 和 clean vector 本身中完全删除这些对象的方法:
void Program::deleteAll(){
vector<Category> *ptr = &(impl->categories);
vector<Category>::iterator it;
for (it = ptr->begin(); it != ptr->end(); ){
delete *it;
it = ptr->erase(it);
it++;
}
}
问题在这里:删除 *it。我在这里得到一个错误。如何在这个循环中删除存储为对象指针的对象?我可以告诉你,我是如何将对象放入 vector 类别的:
void Program::addCategory(string name){
vector<Category> *ptr = &(impl->categories);
Category cat(name);
ptr->push_back(cat);
}
最佳答案
就这么简单
void Program::deleteAll()
{
impl->categories.resize(0);
}
每个 Category
对象的析构函数将由 std::vector
调用,因此 Category
内的所有指针都将被清除。
关于c++ - 当 vector 在内部类中时,如何删除指向对象的 vector 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910842/