...\config.hpp:...: error: use of deleted function 'QFile::QFile(const QFile&)'
我需要让这个QFile
在QList<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")
异常终止时,程序一般都会停在导致程序死掉的语句上。只要仔细检查这一行里涉及的指针,内存空间,就能发现问题所在并解决。