我遇到了函数指针的问题,我在网上找到的任何东西都没有帮助我解决这个问题。
我有一个来自 C API 的函数,它采用 void 函数的指针:
extern int APIFunction(int, void (*func)(int));
我有一个类,其中包含我在调用 API 函数时想要放置的函数。
class MyClass
{
public:
void myFunction(int status, otherAPi arguments...);
};
然后,我创建了一个指向我的成员函数的指针并创建了我的类的一个新实例
typedef void (MyClass::*MyClassFunctionPointer)(int stat, otherAPi arguments...);
MyClassFunctionPointer fctPointer= &MyClass::myFunction;
LicenseSecurity instance;
当我尝试使用我创建的函数指针调用我的 APi 函数时出现错误:
int stat = APIFunction(5, fctPointer ); // -> error 1
int stat = APIFunction(5, instance.*fctPointer ); // -> error 2
在第一种和第二种情况下我分别得到了错误:
E2034 Impossible to convert 'void (MyClass::*)(int, otherAPITypes...)' into 'void (*) (int, otherAPITypes...)'
E2342 Bad type correspondence in the parameter 'func' ('void (*)(int, otherAPITypes...)' desired, 'void(int, otherAPITypes...)' obtained)
我无权访问 API 函数,因此无法修改它。总结问题:如何从我的类的成员函数中获取“简单”的 C 函数指针以放入函数的参数?
谢谢