Существует ли умный указатель, который автоматически обнуляется при уничтожении его цели в C++?

StackOverflow https://stackoverflow.com/questions/909437

Вопрос

Я нашел QPointer.Есть ли другие?

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

Решение

Способствовать росту - weak_ptr имеет несколько приятных функций, которые делают его безопасным в использовании, если вы также используете shared_ptr.Вы держите weak_ptr ссылка на экземпляр, которым управляет shared_ptr продолжительность жизни.Если вам нужно использовать базовый экземпляр, преобразуйте его в shared_ptr экземпляр, используя конструктор shared_ptr класс, или lock метод.Операция завершится неудачей, если базовый экземпляр был удален.Использование является потокобезопасным таким же образом, как и shared_ptr сорт:

shared_ptr<int> p(new int(5));
weak_ptr<int> q(p);

// some time later

if(shared_ptr<int> r = q.lock())
{
    // use *r
}

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

«boost::weak_ptr» очень хорошо работает с «boost::shared_ptr» (также доступно в tr1)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top