如何将c++成员函数转为回调函数所需的普通函数指针
时间: 2024-09-14 12:10:44 浏览: 39
c++函数指针和回调函数示例
在C++中,将成员函数转换为普通函数指针,通常需要借助于`std::function`、`std::bind`、或者是`boost::function`等库来间接实现。这是因为C++标准库并没有直接支持成员函数作为普通函数指针。
以下是步骤:
1. **使用`std::function`**:
```cpp
class MyClass {
public:
void myMemberFunction() {
// ...
}
};
std::function<void()> memberFnPointer = std::bind(&MyClass::myMemberFunction, this);
```
这里`this`关键字用于绑定到具体的对象实例。
2. **使用`std::bind`**:
```cpp
auto memberFnPointer = std::bind(&MyClass::myMemberFunction, this);
```
`std::bind`会创建一个新的可调用对象,它代表了原函数的绑定版本。
3. **使用`boost::function` (如果你使用的是Boost库)**:
```cpp
boost::function<void()> memberFnPointer = boost::mem_fn(&MyClass::myMemberFunction);
```
`boost::mem_fn`允许从成员函数生成一个非成员函数对象。
注意,这些方法都隐含地假设`myMemberFunction`不需要额外的参数。如果需要传递参数,可以使用`std::bind`的第一个模板参数指定接受的参数列表。
阅读全文