例如
class A
{
void f() {}
void g()
{
[this]() // Lambda capture this
{
f();
A* p = this;
[p]() // Workaround to let inner lambda capture this
{
p->f();
};
};
}
};
Run Code Online (Sandbox Code Playgroud)
有什么更好的方法来捕捉内在的lambda?
只是使用[=],这是隐含的捕获.如果你有其他变量,你不想通过副本捕获,那么只需捕获[this].
你可以重新捕获this:
class A
{
void f() {}
void g()
{
[this]()
{
f();
[this]()
// ^^^^
{
f();
};
};
}
};
Run Code Online (Sandbox Code Playgroud)