返回另一个函数指针问题;)
我想在我的类中创建一个函数指针,它可以指向具有不同参数列表的不同函数。那就是我想要一个可以指向并调用以下所有函数的函数指针(带有resp参数)。
funct1采用函数指针和
使用指向func3的指针调用func2,
func2调用func3
在C代码中,它们被声明为:
typedef int (*FUNCTION)();
int func1(long sec, FUNCTION func, int argc, long *argv);
int func2(FUNCTION func);
int func3();
并像这样调用
func1(b->argv[0], func2, 3, arglist){ func(func3); }
现在我已经创建了一个类cDP5来保存那些方法和函数指针 我已经这样声明了
typedef int(cDP5::*FUNCTION)(int *fc, char *buf, int sz);
但在此次调用中遇到编译错误
func1(b->argv[0], func2, 3, arglist);
收到此错误:
cDP5.cpp:725:48: error: no matching function for call to ‘cDP5::func1(long&, <unresolved overloaded function type>, int, long int [3])’
cDP5.cpp:725:48: note: candidate is:
In file included from cDP5.cpp:11:0:
cDP5.h:96:9: note: int cDP5::func1(long int, cDP5::FUNCTION, int, long int*)
cDP5.h:96:9: note: no known conversion for argument 2 from ‘<unresolved overloaded function type>’ to ‘cDP5::FUNCTION {aka int (cDP5::*)(int*, char*, int)}’
好的我想如果我尝试制作一个这样的FUNCTION演员那么
func1(b->argv[0], (cDP5::FUNCTION)func2, 3, arglist);
然后我收到了这个错误:
cDP5.cpp:725:45: error: cannot convert ‘cDP5::func2’ from type ‘int (cDP5::)(int, long int*)’ to type ‘cDP5::FUNCTION {aka int (cDP5::*)(int*, char*, int)}’
如何在c ++类中创建和使用想要的functionpointer? 或者我是否需要为每个参数列表创建一个?
答案 0 :(得分:0)
好的,基于Schiff所提到的和我自己的研究,我发现不可能创建一个带有多个paremeterlists的函数指针。 我必须为每个参数列表创建functionpointer。
虽然有一个选项可以使用我在template function pointer parameter in a class method中找到的模板参数,但我认为这会稍微改变参数类型;)