【发布时间】:2020-05-28 10:50:34
【问题描述】:
我正在尝试创建一个基于类成员返回 lambda 表达式的类成员函数。为简化起见,我创建了此示例代码。
#include <functional>
class A
{
private:
int value;
public:
// Default constructor
A()
: value(0)
{ };
// Constructor
A(int value)
: value(value)
{ };
// Returns a lambda expression
std::function<int()> get_value()
{
return [](){ return value; };
// Gives error: "error: 'this' was not captured for this lambda function"
}
};
我知道对于这个实现,它可以更容易地编程(离开 lambda 表达式),但我认为解释和理解这个概念很好。
问题:如何在类成员lambda表达式中使用类成员变量?换句话说:如何在类的 lambda 函数中捕获“this”?
【问题讨论】: