Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a smart pointer that is automatically nulled when its target is destroyed in C++

I've found QPointer. Are there any others?

like image 215
Neil G Avatar asked Dec 09 '22 20:12

Neil G


1 Answers

Boost - the weak_ptr has some nice features that make it safe to use, if you are also using shared_ptr. You keep a weak_ptr reference to an instance that is managed by shared_ptr lifetime. When you need to use the underlying instance, convert it to a shared_ptr instance using the constructor of the shared_ptr class, or the lock method. The operation will fail if the underlying instance was deleted. The use is thread safe in the same fashion as the shared_ptr class:

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

// some time later

if(shared_ptr<int> r = q.lock())
{
    // use *r
}
like image 63
1800 INFORMATION Avatar answered May 11 '23 16:05

1800 INFORMATION