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 或 const char*

用于QString::toStdString转换为 std::string,例如:

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