首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须手动删除QSet的每个(指针)元素吗?

我必须手动删除QSet的每个(指针)元素吗?
EN

Stack Overflow用户
提问于 2011-12-17 17:22:16
回答 3查看 1K关注 0票数 0

我有一个班级成员:

代码语言:javascript
复制
QSet<QDialog*>* dialogs_;  

我是只需要删除dialogs_,还是必须同时对它的每个元素调用delete?

EN

回答 3

Stack Overflow用户

发布于 2011-12-17 19:06:57

这将会起到作用:

代码语言:javascript
复制
qDeleteAll(*dialogs_);
delete dialogs_

您也可以在不取消引用的情况下执行此操作:

代码语言:javascript
复制
qDeleteAll(dialogs_->begin(), dialogs->end());
delete dialogs_
票数 2
EN

Stack Overflow用户

发布于 2011-12-17 17:27:09

是的,您需要以某种方式手动删除dialogs_中的每个QDialog

您可以遍历QSet并手动对它们执行delete。因为QDialog继承自QWidget,所以另一种方法是,如果父对话框也在空闲存储上分配,则简单地delete所有对话框的父对话框,这将反过来delete它们。

请注意,没有理由在免费存储上分配QSet,如果这是您正在做的事情。只需将new/delete操作设置为您的类的直接成员,即可保存该操作。

代码语言:javascript
复制
QSet<QDialog*> dialogs_;

这就少了一件你需要担心的事情了。手动删除。

票数 1
EN

Stack Overflow用户

发布于 2011-12-17 17:25:03

首先遍历set,删除其中的每个对象,然后删除set对象。

但是,请注意,Qt有自己的内存管理,只需删除集合,并让其中的对象被Qt的机制析构,这可能是可以的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8543791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档