Issues with qDebug and QString const reference
Question
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?
La solution
You return reference to the QString which is destroyed when you leave FileName() function.
Autres conseils
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.:
std::cout << test.FileName().toStdString();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow