说我们有:
class A
{
void Func(std::function<void(void)> handler);
}
class B
{
A myObj;
B()
{
myObj.Func([this]()
{
//whatever
});
}
}
这使得myObj(类型A)具有对lambda对象的引用,lambda对象引用了B对象(通过捕获'this'),而B对象(捕获'this')引用了myObj(类型A) ),这意味着发生了循环依赖,对吗?
我知道解决方案在于以某种方式使用std :: weak_ptr,但我无法理解如何正确使用它们来解决这种情况。任何人都可以为这个例子提供解决方案吗?
谢谢!
答案 0 :(得分:0)
即使存在循环依赖关系,也会删除所有内容,因为简单引用不会阻止删除任何内容。它们就像你在谈论的弱点一样。