QDebugおよびQString Const Referenceの問題
質問
次の機能を持つクラスがあります。
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とstring Returnからconstを削除すると、機能します。 <<は参照では機能しません。何が悪いのか、なぜそれがクラッシュするのですか?
解決
filename()関数を残したときに破壊されるQStringへの参照を返します。
他のヒント
std :: coutはqstringを知らないので、std :: stringまたはconst char*に変換する必要があります
使用する QString::toStdString
std :: stringに変換するには、例:
std::cout << test.FileName().toStdString();
所属していません StackOverflow