Я сейчас в такой ситуации, как:повышение :: shared_ptr цикл разрыв с weak_ptr
struct A {
shared_ptr<B> b;
};
struct B {
shared_ptr<A> a;
};
//...
shared_ptr<A> a(new A());
shared_ptr<B> b(new B());
a->b(b);
b->a(a);
Я знаю, это не будет работать, так как ссылки будут продолжать указывать друг на друга. Мне также сказали, что weak_ptr
решает эту проблему.
Однако weak_ptr
не имеет пересылки или ->
перегрузки. Я слышал упоминания о «использовании lock()
», но может ли кто-нибудь привести примеры кода, как это сделать правильно?
-1 Хотя ссылки на документы полезно, SO ответы должны быть полезными для будущих посетителей должны ссылка стать мертвым. Этот ответ не содержит никакой информации, кроме ссылки. – cdhowie
Плохое отношение к OP – zpon