使用 C 类成员函数作为 C 回调函数
问题:
何时尝试将 C 类成员函数注册为 C 库的回调函数时,编译器会抛出错误,表明函数的类型与预期的签名不匹配。
问题:
答案:
1.使用静态成员函数:
是的,可以将 C 类成员函数注册为回调函数,但它必须是 静态成员函数。静态成员函数没有类型 A* 的隐式第一个参数,因此它们的签名与预期的回调签名匹配。例如:
class A { public: static int e(int *k, int *j) { return 0; } }; int main() { register_with_library(A::e); return 0; }
2。替代方法:
或者,您可以使用以下方法之一:
void e_wrapper(int *k, int *j) { A().e(k, j); }
int (*ptr)(int *, int *) = &A::e; register_with_library(ptr);
以上是C 类成员函数可以用作 C 回调吗?的详细内容。更多信息请关注PHP中文网其他相关文章!