Я довольно новичок в Qt и c ++, но совсем не новичок в программировании.У меня проблемы с использованием указателей в моей программе.В моем заголовочном файле у меня есть следующее назначение указателя закрытой переменной:
private:
QString *currentFile;
В моей программе есть функция, которая начинается с копирования значения указателя currentFile в другую переменную QString:
QString fileName = *currentFile;
Однако это сразу вызывает ошибку сегментации при отладке.Я абсолютно не знаю, что я делаю неправильно.
Программа работает очень хорошо, пока я не вызову функцию, которая пытается получить значение указателя.Я подумал, что это может быть потому, что указатель был пуст, поэтому я попытался добавить следующий код в мой конструктор:
*currentFile = QString::null;
Чтобы присвоить значение null
значению указателя, однако это просто дало мне ошибку сегментациикак только конструктор был вызван.
Надеюсь, что кто-то может помочь.
Спасибо
РЕДАКТИРОВАТЬ
больше кода:
notepad.h:
class Notepad : public QMainWindow
{
Q_OBJECT
public:
Notepad();
private slots:
void open();
void save();
void saveAs();
void quit();
private:
QTextEdit *textEdit;
QString *currentFile;
QString *currentContents;
};
функция, создающая ошибку (void save ()) в notepad.cpp:
void Notepad::save(){
QString fileName = *currentFile;
if(fileName != "")
{
QFile file(fileName);
if(!file.open(QIODevice::WriteOnly))
{
QMessageBox::critical(this, tr("Error"), tr("Could not write to file"));
return;
}
else
{
QTextStream stream(&file);
QString editorContent = textEdit->toPlainText();
currentContents = &editorContent;
stream << editorContent;
stream.flush();
file.close();
}
}
else
saveAs();
}