gpt4 book ai didi

c++ - 当需要指向全局函数的指针时如何使用指向成员函数的指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:12 25 4
gpt4 key购买 nike

我有以下问题。我必须使用一个接受回调的函数。实现回调是棘手的部分,因为除了我可以从输入参数中提取的信息之外,我还需要更多信息。我将尝试举一个例子:

typedef int (*fptr) (char* in, char* out); // the callback i have to implement
int takeFptr(fptr f, char* someOtherParameters); // the method i have to use

问题是我需要除“in”参数之外的其他信息来构造“out”参数。我试过这种方法:

class Wrapper {
public:
int callback(char* in, char* out){
// use the "additionalInfo" to construct "out"
}
char* additionalInfo;
}

...
Wrapper* obj = new Wrapper();
obj->additionalInfo = "whatIneed";
takeFptr(obj->callback, someMoreParams);

我从编译器中得到以下错误:

error: cannot convert 'Wrapper::callback' from type 'int (Wrapper::)(char*, char*)' to type 'fptr {aka int(*)(char*, char*)}'

最佳答案

您需要传递您需要传递的内容,在本例中是指向函数的指针。

::std::function<int (char*, char*)> forwardcall;

int mycallback(char* in, char* out) // extern "C"
{
return forwardcall(in, out);
}

forwardcall 可以包含任何仿函数,例如:

forwardcall = [obj](char* in, char* out){ return obj->callback(in, out); };

关于c++ - 当需要指向全局函数的指针时如何使用指向成员函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077611/

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