2012-02-16 66 views
0

有其具备以下功能类:问题与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 

当我从字符串返回删除常量&,有用。这就像< <不适用于参考。什么是错的,为什么会崩溃?

回答

3

您返回对您退出FileName()函数时销毁的QString的引用。

+0

哦是的!谢谢 – chikuba 2012-02-16 07:51:42

0

的std ::法院不知道QString的,你需要把它转换为的std :: string或为const char *

使用QString::toStdString转换成的std :: string,如:

std::cout << test.FileName().toStdString(); 
+0

哦,对不起。我感谢qDebug处理qstrings,但不明显引用 – chikuba 2012-02-16 06:58:28