如何让QList里的QFile不被回收?

错误信息
...\config.hpp:...: error: use of deleted function 'QFile::QFile(const QFile&)'
问题描述

我需要让这个QFileQList<QFile>里不被回收。

代码
#ifndef INCLUDED_DM_CONFIG
#define INCLUDED_DM_CONFIG
#include <QtCore/QDebug>
#include <QtCore/QSize>
#include <QtCore/QFile>
#include <QtCore/QList>
#include <QtCore/QByteArray>
#include <QtCore/QJsonValue>
#include <QtCore/QJsonObject>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonParseError>
class DmConfig {
public:
    DmConfig() {
        this->update();
    }
    void update() {
        for (QList<QFile>::Iterator iter = this->configFiles.begin(); iter != this->configFiles.end(); ++iter) {
            QString configFileName = (*iter).fileName();
            if ((*iter).open(QFileDevice::ReadOnly)) {
                QByteArray configFileData = (*iter).readAll();
                (*iter).close();
                QJsonParseError configParseError;
                QJsonDocument configDocument(QJsonDocument::fromJson(configFileData, &configParseError));
                if (configParseError.error == QJsonParseError::NoError) {
                    this->configData[configFileName] = configDocument.object();
                } else {
                    qWarning() << "Cannot parse \"" << configFileName << "\": " << configParseError.errorString();
                }
            } else {
                qWarning() << "Cannot read \"" << configFileName << "\".";
            }
        }
    }
    QMap<QString, QJsonObject> data() {
        return this->configData;
    }
private:
    // 问题在这里↘
    QList<QFile> configFiles = QList<QFile>(1) << QFile("../congif/env.cfg");
    // 问题在这里↗
    QMap<QString, QJsonObject> configData;
};
#endif

类的成员不能在声明时初始化,只能在构造函数参数列表初始化或在构造函数中初始化。

在构造函数中初始化,QList装QFile指针 QList<QFile*>, QFile* file = new QFile("../congif/env.cfg")

异常终止时,程序一般都会停在导致程序死掉的语句上。只要仔细检查这一行里涉及的指针,内存空间,就能发现问题所在并解决。