Вопрос

Иметь класс, который имеет следующие функции:

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 & From String return, это работает. Это как << не работает со ссылками. Что не так и почему это разбивается?

Это было полезно?

Решение

Вы возвращаете ссылку на QString, которая разрушается, когда вы оставляете функцию FileName ().

Другие советы

std :: cout не знает qstring, вам нужно преобразовать его в Std :: String или const char*

Использовать QString::toStdString Чтобы преобразовать в Std :: String, например:

std::cout << test.FileName().toStdString();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top