Доступ к переменной-члену класса внутри лямбды вызывает сбой - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть простой класс, который выглядит следующим образом:

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 "недоступен" , Однако я не могу понять, почему это так.

...