gpt4 book ai didi

c++ - 当 vector 在内部类中时,如何删除指向对象的 vector 指针

转载 作者:行者123 更新时间:2023-11-30 04:12:09 27 4
gpt4 key购买 nike

我正在尝试删除包含对指针的引用的完整 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com