我目前有类似的东西
void foo::setup()
{
//this->setSubTitleText("Summary");
button("ok")->onPress = [=](Mtype*)
{
this->bar(this); //Why is the this pointer being recognized here?
};
}
lambda的capture子句中的=
是否允许访问this
指针。在我的情况下它是?我的印象是使用this
指针,我需要明确地捕获它,如
button("ok")->onPress = [=,this](Mtype*)
{
this->bar(this); //Why is the this pointer being recognized here?
};
有什么建议吗?
答案 0 :(得分:1)
我认为cppreference.com非常明确地说明了这一点:
Lambda捕获
捕获是以逗号分隔的零个或多个捕获列表, 可选地以capture-default开头。唯一的捕获 默认值是
&安培; (通过引用隐式捕获odr使用的自动变量) 和
=(通过复制隐式捕获odr使用的自动变量)。
如果捕获,则可以隐式捕获当前对象(* this) 默认存在。如果隐式捕获,则始终捕获它 参考,即使捕获默认值为=。