回调函数可以使用类内的成员函数吗,给我c++代码示例
时间: 2024-10-18 09:19:07 浏览: 21
C#调用C++动态库,执行回调函数并传递结构体参数
回调函数确实可以在类内使用成员函数,这种设计常见于事件处理、异步操作等场景。当需要将某个特定的操作作为参数传递给另一个函数,并希望在适当的时候由这个函数内部触发,这时就可以用到回调函数。
下面是一个简单的 C++ 示例,展示如何在一个类 `MyClass` 中使用成员函数作为回调:
```cpp
#include <iostream>
class MyClass {
public:
void setCallback(std::function<void()> callback) {
// 存储回调函数
m_callback = callback;
}
// 成员函数作为回调
void callMe() {
if (m_callback) {
m_callback(); // 调用存储的回调
}
}
private:
std::function<void()> m_callback; // 声明一个回调函数指针
};
// 客户端代码
int main() {
MyClass obj;
// 创建一个匿名函数作为回调
auto myCallback = []() { std::cout << "Member function called!" << std::endl; };
// 设置回调
obj.setCallback(myCallback);
// 在适当的时候调用
obj.callMe();
return 0;
}
```
在这个例子中,`setCallback` 函数接受一个 `std::function<void()>` 类型的参数并将其保存在类的私有成员变量 `m_callback` 中。然后在 `callMe` 函数中,如果回调存在,就调用它。
阅读全文