0

私の問題は十分に単純ですが、これを修正することはできません...

私のヘッダーで:

QTextStream *in = NULL;

1 つのメソッドで 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!");
}

初期化は正常に機能しますが、 inatEnd()の場合、アプリはテストでクラッシュします。私は何を間違っていますか?いくつかの方法からアクセスできるようする必要があります。ここでポインタを使用する必要があります(?) inは後で初期化されるためです(AFAIKは参照では不可能です)

明らかかもしれませんが、私はC ++にかなり慣れていません...

ありがとうございました!

4

1 に答える 1

6

でテキスト ストリームを初期化していることがわかります&file。ローカル変数のようfileで、初期化関数が完了すると破棄されます。QTextStream は、ストリームが破棄されるまで、渡された IO デバイスが有効であることを期待しています。したがって、セグメンテーション違反が発生します。fileテキスト ストリームの使用中に が破棄されないようにする必要があります。

于 2013-10-31T13:20:51.637 に答える