Ошибка сегментации с элементом QList

В моем приложении у меня есть список указателей на объекты QFile:

QList<QFile*> files

Эта функция добавляет элементы в список:

void MumuServer::openFiles(){
QDir fileDir(QDir::toNativeSeparators(homeApp.path() + "/file"));
std::cout << fileDir.path().toStdString() << std::endl;
if(fileDir.exists()){ // there is files directory in the application home dir
std::cout << "fileDir exists" << std::endl;
QStringList filesList = fileDir.entryList();
for(int index = 0; index < filesList.size(); index++){
QString fileName = filesList.at(index);
if(this->blackListFile.contains(fileName)){
continue;
}
QString path = fileDir.path() + "/" + fileName;
std::cout << path.toStdString() << std::endl;
QFile file(QDir::toNativeSeparators(path));
if(file.exists()){
files.append(&file);
}
}
std::cout << this->files.size() << " files found" << std::endl;
}

После этой функции указатели QFile добавляются в QList. Но когда я пытаюсь манипулировать чем-то в элементе списка, получая это с помощью функции в (int), возникает ошибка сегментации.

Пример:

QFile * file = files.at(index);
std::cout << "File size = " << file->fileName() << std::endl;

Кто-то видит, что я делаю не так?

0

Решение

Объекты, которые вы поместили в свой список «файлов», вышли из области видимости и были уничтожены. Используйте оператор ‘new’, чтобы распределить их. Обязательно удалите их, когда закончите, иначе у вас будет утечка памяти.

    QFile* file = new QFile(QDir::toNativeSeparators(path));
if(file->exists()){
files.append(file);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]