C:\Qt\Qt5.14.0\5.14.0\mingw73_64\include\QtCore\qlist.h:492: error: 'QFile::QFile(const QFile&)' is private within this context current->v = new T(*reinterpret_cast<T*>(src->v)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
时间: 2023-07-06 19:43:54 浏览: 319
这个错误是因为 `QFile` 的复制构造函数是私有的,不能在 QList 中使用。为了解决这个问题,可以将 `QFile` 对象存储在 QList 中的指针改为 `QSharedPointer<QFile>`。使用 `QSharedPointer` 可以确保 `QFile` 对象在不需要时被自动删除,避免内存泄漏。
改进后的代码如下:
```cpp
#include <QList>
#include <QSharedPointer>
#include <QFile>
int main()
{
QList<QSharedPointer<QFile>> fileList;
fileList.append(QSharedPointer<QFile>::create("file1.txt"));
fileList.append(QSharedPointer<QFile>::create("file2.txt"));
fileList.append(QSharedPointer<QFile>::create("file3.txt"));
// 使用 fileList 中的 QFile 对象
for (const auto& file : fileList) {
if (file->open(QIODevice::ReadOnly)) {
// 读取文件内容
}
}
return 0;
}
```
在这个例子中,我们使用 `QSharedPointer::create()` 函数创建了三个 `QSharedPointer<QFile>` 对象,它们分别对应文件 "file1.txt"、"file2.txt" 和 "file3.txt"。可以通过调用 `fileList.append()` 函数来向 QList 中添加新元素。
在使用 QList 中的 QFile 对象时,可以通过 `QSharedPointer::operator->()` 和 `QSharedPointer::operator*()` 运算符来访问 QFile 对象的成员函数和成员变量。在这个例子中,我们通过 `file->open(QIODevice::ReadOnly)` 打开了 QFile 对象,读取了文件内容。
阅读全文