c++ - 从 QMap 中删除一个指针?

标签 c++ qt pointers dynamic-allocation

我有一个带有 QString 键和指向 myclass 对象的值指针的 QMap。但是当我动态分配QMap的值时,我不知道如何从QMap中删除a指针:

QMap<QString, myClass*> types;

myClass *type = types.value(typeKey);
    if (!type) {
        type = new myClass;
        types.insert(typeKey, type);

如何按键删除指针? 我知道像 remove 这样的 QMap 方法。使用安全吗?

以下情况如何:

const QString key = types.key(static_cast<myClass*>());
    types.remove(key);

最佳答案

remove() 函数从 map 中删除项目,但它不会删除它,因此如果它是指向对象的指针,则您必须自己执行此操作。我会通过以下方式做到这一点:

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

关于c++ - 从 QMap 中删除一个指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767322/

相关文章:

C++:扩展枚举定义?

c# - 寻找 C++ 到 WPF/Cocoa 互操作性的跨平台、端到端示例

c++ - 如何在Qt的QGraphicsView中创建任意大小的点?

c++ - 根据 Derived 中的值检查 Base 类的模板参数

c++ - 在 C++ 中,相等运算符中两个 = 之间的空格是否合法?

qt - Qt TCP服务器在单独的线程中运行readyRead()

c++ - 交叉编译Qt for ARM时出错

c - 使用 C 在 Berkeley DB 中存储 JSON 字符串

C 指针数组和 malloc

c++通过指针访问数组