c++ - 如何从成员函数中获取 "simple"函数指针

标签 c++ type-conversion function-pointers member c++builder-xe

我在函数指针方面遇到了问题,但我在网上找不到任何东西可以帮助我解决这个问题。

我有一个来自 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 函数指针以放入函数的参数中?

谢谢

最佳答案

不幸的是,你不能。对不起。

理想情况下,您的 API 会接受类似于 std::function 的东西,这样您就可以包装自由函数或成员函数。但是,如果您不能修改 API,那么您别无选择,只能提供免费功能。

关于c++ - 如何从成员函数中获取 "simple"函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958553/

相关文章:

c++ - 在运行时添加自定义 QWidget

reactjs - React Native Typescript Formik 转换事件类型

r - 如何从混合字符串中提取数字

使用 VS 测试专家进行 C++ 单元测试

C++浮点减法似乎没有发生

c++ - std::vector 随机添加元素到 vector

javascript - JavaScript 如何对 == 进行类型转换?

C 函数指针差异

c++ - 如何声明一个常量的方法指针

php - php 无法识别 iframe src