如果你想在 QList 中存储指针,可以使用 QList<QPointer<T>>,其中 T 是指针指向的类型。QPointer 是 Qt 提供的一个智能指针类,可以在对象被删除后自动将指针设置为 nullptr,避免悬空指针的问题。

以下是一个示例代码,演示了如何在 QList 中存储指针并执行增删操作:

#include <QList>
#include <QPointer>

int main()
{
    QList<QPointer<int>> list;

    // 添加指针
    int* ptr1 = new int(1);
    list.append(QPointer<int>(ptr1));

    int* ptr2 = new int(2);
    list.append(QPointer<int>(ptr2));

    // 删除指针
    delete ptr1;
    delete ptr2;

    // 遍历列表
    for (auto it = list.begin(); it != list.end(); ++it) {
        if (*it) {
            qDebug() << *(*it);
        }
    }

    return 0;
}

在这个示例中,我们使用 QList<QPointer<int>> 存储了两个 int 类型的指针。在添加指针时,我们使用 QPointer 类的构造函数将指针包装成 QPointer 对象,然后使用 append() 函数将其添加到 QList 中。在删除指针时,我们使用 delete 操作符删除指针,这会自动将 QPointer 中的指针设置为 nullptr。最后,我们遍历 QList 并打印非空指针的值。

请注意,使用 QPointer 并不意味着你不需要手动删除指针。QPointer 只是提供了一种方式来避免悬空指针的问题,但你仍然需要手动删除指针以避免内存泄漏。

Qt QList 存储指针:增删操作详解

原文地址: https://www.cveoy.top/t/topic/pi9Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录