c++多个回调函数怎么写函数声明
时间: 2024-10-15 08:17:50 浏览: 17
C/C++之回调函数
在 C++ 中,如果你想要处理多个回调函数,你可以通过将它们作为函数参数列表、返回值类型或者是成员函数的方式实现。这里有几个例子:
1. **作为参数**:
```cpp
template <typename Func1, typename Func2>
void callBacks(Func1 firstCallback, Func2 secondCallback) {
// 调用第一个回调
firstCallback();
// 调用第二个回调
secondCallback();
}
```
2. **作为返回类型** (std::function 或者 C++17 的 lambda):
```cpp
using Callback1 = void(*)();
using Callback2 = void(*)(int);
std::pair<Callback1, Callback2> getCallbacks() {
return {[](void){ /* callback 1 */ }, [](int i){ /* callback 2 with int parameter */ }};
}
void invokeCallbacks(const std::pair<Callback1, Callback2>& callbacks) {
callbacks.first(); // 调用第一个回调
callbacks.second(42); // 调用第二个回调并传递整数
}
```
3. **作为类的成员函数**:
```cpp
class MyClass {
public:
typedef void(*Callback)(int);
void registerCallback(Callback callback1, Callback callback2) {
// 注册回调
}
// 在适当的时候调用注册的回调
void doSomething(int param) {
registeredCallback1(param);
registeredCallback2(param);
}
private:
std::vector<Callback> callbacks;
};
```
记住,每个回调函数都应该有明确的参数和返回类型,并且需要按照相应的方式来调用。
阅读全文