У меня есть простой класс, который выглядит следующим образом:
class QNetworkAccessManager;
class FontiDownloader : public QObject
{
Q_OBJECT
public:
FontiDownloader(QNetworkAccessManager* netManager);
void downloadFonti();
private:
QString m_dataLocation;
};
Реализация downloadFonti()
выглядит примерно так:
// the networkrequest is just a wrapper that makes a QNetworkRequest
auto nr = new NetworkRequest(m_netManager, this);
connect(nr, &NetworkRequest::completed, [this](QNetworkReply* reply){
// crash occurs here
QString dataLocation = m_dataLocation;
});
nr->send(QUrl(FONTI_URL), HttpMethod::GET);
Когда я вызываю свою лямбда-функцию внутри downloadFonti()
, программа аварийно завершает работу, и я обнаружил причину для строки:
QString dataLocation = m_dataLocation;
Я вижу, используя отладчик, что во время вызова этой строки, m_dataLocation
"недоступен" , Однако я не могу понять, почему это так.