我使用的 API 只接受 void 回调函数:
void (* CALLBACKFUNC) (void);
我想调用带参数的回调函数,而不是为不同的输入参数编写多个具有相同功能的回调函数。 假设我需要一个像
这样的回调函数void myFunc (int a);
更新:更多信息:调用回调函数,基于事件应该是这样的:
event1 -> calling myFunc(1);
event2 -> calling myFunc(2);
...
事件的数量是有限的并且 MAX 是预定义的(如果它有帮助),但我不想复制功能(实际上,在真实情况下,有多个输入值,复制不同组合的函数调用不是一件容易的事)
P.S:我也可以使用 C++11。有什么建议么?。
最佳答案
这个解决方案怎么样?您无需手动定义新函数来设置不同的状态。
#include <iostream>
void setState(int s) {
std::cout << "Set state to " << s << std::endl;
}
template <int n>
void myWrapper() {
setState(n);
}
void myLogic(void(*CALLBACK)(void)) {
CALLBACK();
}
int main(int argc, char* argv[]) {
myLogic(myWrapper<50>);
myLogic(myWrapper<100>);
}
关于c++ - 如何避免复制回调函数 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924750/