<分区>
我有一个C语言函数要调用:
f_api(void(*callback)(int))
我有一个用于回调的静态类方法:
struct A {
static void CallBack(int i) {
A::count = i;
}
static count = 0;
};
我可以这样调用函数:
f_api(&A::CallBack)
但是,我现在必须将回调更改为非静态的,因为我必须创建多个 A
对象。
但是我不能改变f_api()
的定义。
我尝试使用 lambda:
f_api([this](int i)->void{this->count = i;})`
但这失败了,因为我无法将带捕获的 lambda 转换为简单的函数指针。
std::bind()
也不能完成这项工作,因为 f_api()
定义。
我能为此做什么?如何从 lambda 表达式中获取函数指针?有什么方法可以回避吗?