「this」はなぜNULLですか? C++のセグメント化エラー
私はQtアプリケーションを構築していますが、セグメント化エラーのためクラッシュしています。調査の結果、segfaultの原因は "this"がNULLで、readInputFile(QString path)メソッドのメンバー変数にアクセスしようとしていることがわかりました。 このライン内input += line;
私はこれがなぜ起こっているのか分かりません。どのように "this"をNULLにすることができますか?
オブジェクトが
void MainWindow::on_inpFileCheck_clicked()
{
if (ui->inpFileCheck->isChecked()) {
QString filePath = QFileDialog::getOpenFileName(this,tr("Open CSV file"), "/home", tr("CSV (*.csv)"));
myAlgo->readInputFile(filePath);
ui->inputEdit->clear();
ui->inputEdit->appendPlainText(myAlgo->getInput());
}
}
を作成しているのはここ。ここBaseAlgorithmヘッダが
#include "qstring.h"
#include "qmainwindow.h"
class BaseAlgorithm
{
public:
BaseAlgorithm();
QString readInputFile(QString);
int lenArr;
private:
QString input;
QString output;
};
そして、ここに実装し、どこに問題が
#include "basealgorithm.h"
#include "qfile.h"
#include "qtextstream.h"
BaseAlgorithm::BaseAlgorithm() {
numComparisons = 0;
input = "";
output = "";
intArr = NULL;
}
QString BaseAlgorithm::readInputFile(QString path) {
QFile inpFile(path);
if (inpFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&inpFile);
while (!in.atEnd()) {
QString line = in.readLine();
input += line; // crash happens here
}
return input;
}
else {
return "ERROR";
}
}
をたまたまだだです
どこがクラッシュしますか? – DeiDei
@DeiDei更新。 readInputFile()メソッド内。この行 'input + = line;' –
'BaseAlgorithm'がどこでどのように作成されているかを知らなくても、大したことは言えません。私は自分自身を作ることをお勧めします[mcve]。それが問題の場所と解決方法を表示しない場合は、問題のコードを削除し、MCVEに置き換えてください。 – user4581301