Как я могу проверить, действителен ли указатель «этот» класса в функции обратного вызова? ⇐ C++
-
Гость
Как я могу проверить, действителен ли указатель «этот» класса в функции обратного вызова?
класс myClass { публика: пустота веселья() { async_do([это](int j) { я+=j; }); } частный: интервал я = 9; } интервал основной() { std::shared_ptr obj = std::make_shared(); объект->весело(); объект-> сброс(); вернуть 0; } Приведенный выше код: когда мы вызываем fun(), он вызывает async_do(), async_do() немедленно возвращает результат. Когда асинхронная операция завершится, будет вызвана лямбда-функция. Но пока эта асинхронная операция еще выполняется, объект может быть уничтожен. Когда вызывается лямбда, объект больше не существует. Что мне делать в этой функции обратного вызова в этой ситуации?
Спасибо за вашу помощь.
класс myClass { публика: пустота веселья() { async_do([это](int j) { я+=j; }); } частный: интервал я = 9; } интервал основной() { std::shared_ptr obj = std::make_shared(); объект->весело(); объект-> сброс(); вернуть 0; } Приведенный выше код: когда мы вызываем fun(), он вызывает async_do(), async_do() немедленно возвращает результат. Когда асинхронная операция завершится, будет вызвана лямбда-функция. Но пока эта асинхронная операция еще выполняется, объект может быть уничтожен. Когда вызывается лямбда, объект больше не существует. Что мне делать в этой функции обратного вызова в этой ситуации?
Спасибо за вашу помощь.
Мобильная версия