4
A
ответ
8
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
}
6
«повышение :: weak_ptr» работает очень хорошо «повышение :: shared_ptr» (также доступен в TR1)
Спасибо. Я не знал, что у этого слабого_птре было такое поведение. Интересно, сколько я плачу за ненужное поведение подсчета ссылок. В любом случае, ваш ответ был первым, я думаю. Маркировка как можно лучше. –