函数指针问题

sam*_*moz 3 c++ pointers function

我正在尝试使用函数指针,但下面的3行似乎并不想合作......

我收到错误代码C3867.

你能看出我做错了什么吗?

在.h文件中

void MyFunc(int, FILEINFO*(*)(FILEINFO*), FILEINFO*, int);
Run Code Online (Sandbox Code Playgroud)

.cpp文件中的定义

void MyFunc(int number, FILEINFO*(*GetFiles)(FILEINFO*), FILEINFO* args, int type);
Run Code Online (Sandbox Code Playgroud)

然后这是我实际调用函数的地方

MyFuncClass->MyFunc(GetNumber(), &BigClass::PassThis, GetArgs(), TheType);
Run Code Online (Sandbox Code Playgroud)

跳出来有什么问题?

Ada*_*eld 9

定义是BigClass::PassThis()什么?它是静态类成员函数还是常规成员函数?如果它是常规成员函数,则不能这样做,因为它具有隐藏this参数.请参阅C++ FAQ Lite的问题33.4.


dna*_*naq 7

您不能将类的非静态成员函数作为普通函数指针传递,因为成员函数隐式使用this-pointer.对此的解决方案是定义一个静态成员函数,该函数将指向该类的指针作为它的第一个参数,并将调用包装BigClass::PassThis并传递指向该成员函数的指针.有关更多信息,请参阅 功能指针教程.

更好的解决方案可能是考虑使用仿函数.