Frage

Haben Sie eine Klasse, die die folgenden Funktionen hat:

FileInfoWrapper(const QFileInfo &_fileInfo) : fileInfo(_fileInfo) {}

const QString& FileName() const { return fileInfo.fileName(); }

Aber wenn ich das mache:

QFileInfo info(somePath);

qDebug() << info.absoluteDir(); // works

FileInfoWrapper test(info);

qDebug() << test.FileName(); // this crashes the entire application

Wenn ich die const & aus der String -Rückkehr entferne, funktioniert es. Es ist, als würde << nicht mit Referenzen funktionieren. Was ist los und warum stürzt es ab?

War es hilfreich?

Lösung

Sie geben den Verweis auf das QString zurück, das zerstört wird, wenn Sie die Funktion "Dateiname () verlassen.

Andere Tipps

std :: cout kennt qstring nicht, Sie müssen es in std :: string oder const char* konvertieren

Verwenden QString::toStdString Um in Std :: String konvertieren, zB:

std::cout << test.FileName().toStdString();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top