То, что вы делаете выше, явно поддерживается weak_ptr
и shared_ptr
, что происходит, когда вы пытаетесь это сделать? Чтобы быть более точным, делайте то, что вы делаете, без нулевого удалителя, и затем вы используете стандартное поведение на weak_ptr
, чтобы преобразовать его в shared_ptr
, если необходимо:
boost::shared_ptr<X> it=myWeakPtr.lock();
if (it)
{
// if the conversion succeeded, then the parent instance is still alive
}