Моя проблема достаточно проста, но я не могу это исправить …
В моем заголовке:
QTextStream *in = NULL;
в одном методе QTextStream инициализируется:
in = new QTextStream(&file);
тогда я пытаюсь разобрать его другим способом:
QString next;
if(in != NULL){
while(!in->atEnd()){
next = in->readLine();
}
}
else{
QMessageBox::critical(this, "Error", "No file to test!");
}
Хотя инициализация работает нормально, приложение вылетает при тестировании, если в является atEnd (). Что я делаю неправильно? я нуждаюсь в быть доступным из нескольких методов. Я должен использовать указатель здесь (?), Потому что в инициализируется позже (AFAIK, что невозможно со ссылками)
Это может быть очевидно, но я довольно плохо знаком с c ++ …
Спасибо!
Я вижу, что вы инициализируете поток текста с &file
, Это выглядит как file
является локальной переменной и уничтожается при завершении функции инициализации. QTextStream ожидает, что переданное устройство ввода-вывода будет действительным, пока поток не будет уничтожен. Таким образом, вы получите Segfault. Вы должны убедиться, что file
не уничтожается при использовании текстового потока.
Других решений пока нет …