qDebug 和 QString const 引用的问题
有一个具有以下功能的类:
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 &从字符串返回,它可以工作。就像<<不适用于参考。出了什么问题以及为什么会崩溃?
Have a class which have the following functions:
FileInfoWrapper(const QFileInfo &_fileInfo) : fileInfo(_fileInfo) {}
const QString& FileName() const { return fileInfo.fileName(); }
But when I do this:
QFileInfo info(somePath);
qDebug() << info.absoluteDir(); // works
FileInfoWrapper test(info);
qDebug() << test.FileName(); // this crashes the entire application
When I remove the const & from the string return, it works. It's like << doesn't work with references. Whats wrong and why does it crash?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您返回对 QString 的引用,当您离开 FileName() 函数时,该引用将被销毁。
You return reference to the QString which is destroyed when you leave FileName() function.
std::cout 不认识 QString,您需要将其转换为 std::string 或 const char*
使用
QString::toStdString
转换为 std::string,例如:std::cout doesn't know QString, you need to convert it to std::string or const char*
Use
QString::toStdString
to convert to std::string, e.g.: