如何做到给成员函数直接赋值一个lambda表达式
时间: 2023-07-07 09:20:20 浏览: 105
Lambda表达式转sql
3星 · 编辑精心推荐
在C++11之后,可以使用Lambda表达式来作为函数对象传递给成员函数。Lambda表达式是一种匿名函数,可以直接在函数调用时定义和使用。要给成员函数直接赋值一个Lambda表达式,需要使用C++11中的std::function模板类。具体步骤如下:
1. 在成员函数中定义一个std::function对象,该对象的模板参数为函数的参数列表和返回值类型。
2. 将Lambda表达式作为std::function对象的参数进行初始化。
3. 在需要调用该函数的地方,直接调用该成员函数即可。
例如,以下代码演示了如何给一个成员函数直接赋值一个Lambda表达式:
```
#include <iostream>
#include <functional>
class MyClass {
public:
void func(std::function<void()> f) {
f();
}
};
int main() {
MyClass obj;
obj.func([]() {
std::cout << "Hello, world!" << std::endl;
});
return 0;
}
```
在上面的代码中,定义了一个名为MyClass的类,其中有一个名为func的成员函数,该函数的参数为std::function<void()>类型的函数对象。在主函数中,创建了一个MyClass的对象obj,并将一个Lambda表达式作为参数传递给obj的func成员函数。func函数将Lambda表达式作为函数对象进行调用,输出了"Hello, world!"。
阅读全文