c++11 std::function使用回调,在同一个类成员函数中,接收数据同时发送数据
时间: 2024-11-08 14:12:45 浏览: 14
在C++11中,`std::function` 是一个通用的函数指针容器,它可以存储任意类型的函数对象。当你需要在一个类的成员函数中使用回调功能,比如处理某种事件并传递数据,你可以这样做:
首先,创建一个接受特定参数并能够处理数据的回调函数模板:
```cpp
template <typename Data>
void handleData(Data data) {
// 在这里处理数据
// ...
}
```
然后,在类的成员函数中,你可以使用 `std::function` 存储这个回调,并在适当的时候调用它,例如在事件发生时:
```cpp
class MyClass {
public:
// 创建一个接受数据的函数对象
std::function<void(Data)> onDataCallback;
private:
void processEvent() {
// 假设event是一个包含数据的对象
auto eventData = ...;
// 如果onDataCallback已经被设置,就调用它
if (onDataCallback) {
onDataCallback(eventData);
}
}
// 接收外部提供的回调函数
void setOnDataCallback(std::function<void(Data)> callback) {
onDataCallback = callback;
}
};
```
在这个例子中,`setOnDataCallback` 方法允许你在类外设置回调,当需要处理数据时,只需通过已注册的回调传递数据。
阅读全文