0

次の機能を持つクラスを用意します。

FileInfoWrapper(const QFileInfo &_fileInfo) : fileInfo(_fileInfo) {}

const QString& FileName() const { return fileInfo.fileName(); }

しかし、私がこれを行うとき:

QFileInfo info(somePath);

qDebug() << info.absoluteDir(); // works

FileInfoWrapper test(info);

qDebug() << test.FileName(); // this crashes the entire application

文字列の戻り値から const & を削除すると、機能します。<< は参照では機能しないようです。何が問題で、なぜクラッシュするのですか?

4

2 に答える 2

4

FileName() 関数を終了すると破棄される QString への参照を返します。

于 2012-02-16T07:45:25.370 に答える
0

std :: coutはQStringを認識していません。これを、std::stringまたはconstchar*に変換する必要があります。

QString::toStdStringstd :: stringに変換するために使用します。例:

std::cout << test.FileName().toStdString();
于 2012-02-16T06:50:10.273 に答える