例如
class A
{
void f() {}
void g()
{
[this]() // Lambda capture this
{
f();
A* p = this;
[p]() // Workaround to let inner lambda capture this
{
p->f();
};
};
}
};
有什么更好的方法可以在内部lambda中捕获它?
答案 0 :(得分:8)
只需使用[=]
,即可隐式捕获。如果您有其他您不希望通过副本捕获的变量,那么只需捕获[this]
。
答案 1 :(得分:5)
您可以重新捕获this
:
class A
{
void f() {}
void g()
{
[this]()
{
f();
[this]()
// ^^^^
{
f();
};
};
}
};