【发布时间】:2019-02-14 12:54:19
【问题描述】:
我在 C++ 应用程序中使用 C 库。 C SDK 具有将回调函数指针作为参数的函数。这些函数的签名通常是这样的:
typedef int (* Func) (type1 c, type2 d);
我使用 C++ 中的类构建了我的代码。但是,我不能将任何成员函数作为回调传递给这个函数,因为它不接受int (MyClass::*)(type1 c, type2 d),只接受int (*)(type1 c, type2 d)。
我通过在各种类中将所有回调定义为 static 然后将它们传递给 C 库来解决这个问题。
我还是 C++ 新手,所以我不确定这是否是正确的解决方案?该代码有效,但我很想知道我是否做错了。
【问题讨论】:
-
C 回调应采用
void* user_data以允许使用 C++ 中的类。 -
@ThomasSablik Boost.Bind 如何帮助 C 回调?
标签: c++