Qt QList 存储指针:增删操作详解
如果你想在 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 只是提供了一种方式来避免悬空指针的问题,但你仍然需要手动删除指针以避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/pi9Y 著作权归作者所有。请勿转载和采集!