删除作为指针的 QMap 值

Delete QMap value as a pointer

本文关键字:QMap 指针 删除      更新时间:2023-10-16

我有一个带有键QStringmyClassQMap。我浏览了Qt文档,并决定将值定义为指向myClass对象的指针。但是,我对如何同时remove键和(由新运算符分配的指针对象)值的问题感到困惑?如果我使用 remove() 方法,就动态分配对象的内存释放而言,这是否安全?

这是一个好的选择吗?

myClass *type = types.take("foo");
delete type;

正如Qt文档对QMap::take()函数所说

从映射中删除具有键键的项,并返回与其关联的值。

这样您的代码将从映射中删除键并删除为 myClass 对象分配的内存。