Boost - 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
}