将一个类函数赋值给 std::function
时间: 2024-09-02 13:04:22 浏览: 94
理解C++编程中的std::function函数封装
`std::function`是C++11标准库中的一个通用的函数封装器,它可以存储、复制和调用任何类型的可调用实体,比如函数指针、成员函数指针、lambda表达式、函数对象等。将一个类的成员函数赋值给`std::function`,需要满足一些特定条件。
在C++中,成员函数指针与普通函数指针是不同的,因为成员函数需要一个类的实例来调用。当你想要将一个类的成员函数赋值给`std::function`时,通常需要使用`std::bind`或者`std::mem_fn`来绑定类的实例和成员函数。
下面是一个简单的示例:
```cpp
#include <iostream>
#include <functional>
class MyClass {
public:
void memberFunction() {
std::cout << "成员函数被调用" << std::endl;
}
};
int main() {
MyClass myInstance;
// 使用 std::bind 将成员函数和类的实例绑定在一起
std::function<void()> func = std::bind(&MyClass::memberFunction, &myInstance);
// 调用函数
func();
return 0;
}
```
在上述代码中,`std::bind(&MyClass::memberFunction, &myInstance)`将`MyClass`的`memberFunction`成员函数绑定到`myInstance`实例上,并返回一个可以被调用的函数对象,然后赋值给`std::function<void()> func`。
阅读全文