我正在使用仅接受无效回调函数的API:
我想使用参数调用回调函数,而不是针对不同的输入参数编写具有相同功能的多个回调函数。
假设我需要一个像
UPDATE :更多信息:基于事件调用回调函数应类似于:
事件的数量是有限的,并且MAX是预先定义的(如果有帮助),但是我不想复制功能(实际上,在实际情况下,有多个输入值,并且为不同的函数复制函数调用)组合并非易事)
附言:我也可以使用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>);
}