저는 Qt와 C++에 새로 도입되었지만 프로그래밍에 익숙하지 않았습니다. 내 프로그램에서 포인터를 사용하는 데 문제가 있습니다. 내 헤더 파일에서 나는 다음과 같은 전용 변수 포인터 할당을 가지고있다 :Qt에서 포인터 값을 수신하려 할 때 세그먼트 오류가 발생했습니다.
나는 다른 QString 변수에 currentFile 포인터의 값을 복사하여 시작하는 기능을 가지고있다 내 프로그램에서private:
QString *currentFile;
:
QString fileName = *currentFile;
을
그러나 이것은 즉시 디버깅 할 때 세그먼테이션 오류를 발생시킵니다. 내가 뭘 잘못하고 있는지 전혀 모른다.
포인터의 vlue를 얻으려는 함수를 호출 할 때까지 프로그램이 잘 실행됩니다. 그러나 이것은 단지 즉시 나에게 세그먼트 오류를 준
*currentFile = QString::null;
포인터 값에 null
값을 지정하려면 : 나는 포인터가 비어 becuase 내 constructer에 다음 코드를 추가하는 시도 그래서 수 있습니다 생각 생성자가 호출되었습니다.
누군가가 도움을 줄 수 있기를 바랍니다.
감사
편집
더 많은 코드 :
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