Problemi con qDebug e QString riferimento const
Domanda
Avere una classe che ha le seguenti funzioni:
FileInfoWrapper(const QFileInfo &_fileInfo) : fileInfo(_fileInfo) {}
const QString& FileName() const { return fileInfo.fileName(); }
Ma quando faccio questo:
QFileInfo info(somePath);
qDebug() << info.absoluteDir(); // works
FileInfoWrapper test(info);
qDebug() << test.FileName(); // this crashes the entire application
Quando rimuovo il const e dal ritorno di stringa, funziona. E 'come << non funziona con i riferimenti. Che cosa è sbagliato e perché si pianta?
Soluzione
Si torna riferimento al QString che viene distrutto quando si esce FileName function ().
Altri suggerimenti
std :: cout non sa QString, è necessario convertirlo in std :: string o const char *
Usa QString::toStdString
per convertire a std :: string, per esempio:.
std::cout << test.FileName().toStdString();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow