我对Qt和C++很陌生,但对编程根本不陌生。我在我的程序中使用指针时遇到问题。在我的头文件我有以下私有变量的指针赋值:尝试在Qt中接收指针值时出现分段错误
private:
QString *currentFile;
在我的节目,我已经得到了由currentFile指针的值复制到另一个QString的可变启动功能:
QString fileName = *currentFile;
然而这在调试时会立即给我分段错误。我完全不知道我做错了什么。
该程序运行得很好,直到我调用函数试图获得指针的线索。我想这可能是监守指针是空的,所以我尝试添加以下代码到我的建筑工:
*currentFile = QString::null;
要将null
值赋给指针值,然而,这只是尽快给我的分段错误的constructer被调用。
希望有人能帮忙。
由于
EDIT
更多的代码:
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;
};
函数产生错误(无效保存())在记事本中。 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();
}
更多的代码。另外,不要使用指针,你不需要它。 –
在构造函数中增加了更多代码.. – Simon
'* currentFile = QString :: null'将一个未初始化的指针解引用。如果有的话,这应该是'currentFile = QString :: null'。 – eran