gpt4 book ai didi

c++ - 如何避免复制回调函数 (C++)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:54 27 4
gpt4 key购买 nike

我使用的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com