gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:19:13 24 4
gpt4 key购买 nike

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

我有一个来自 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com