【发布时间】:2013-04-02 10:57:02
【问题描述】:
Lambda 可以使用 [=] 语法从创建它们的上下文中捕获成员。我假设必须有一个状态引用存储在 lambda 中,类似于 this 指针。
class Class
{
public:
void Function()
{
/*
* pass this lambda expression as parameter to another
* function and from there recover the this pointer which
* would be of the type Class* for further usage.
*/
[=](int)->int { /* do something with this->Member */ }
}
private:
int Member;
};
有没有办法从 lambda 表达式中获取引用指针?
【问题讨论】:
-
可以捕获
this:[=, this](int)->int { } -
@jrok:
this已被捕获。问题是,捕获的值能否从 lambda 对象中恢复? -
读了第二遍,明白了你的意思,确实是个有趣的问题。但我想不会,因为我猜,从
Member到captured_this_pointer->Member在 lambda 函数体内的映射是在幕后。
标签: c++ lambda closures this std