我需要将指向成员函数的指针作为参数传递给另一个类中的成员函数。我正在做的是如下所示。我想用 void* ProcessHandler::Task(void* a) 作为第一个参数来调用 int Processor::AddJob(void ( _pFunc)(void*), void* _pArg) 方法。我这样做了
TaskFunc pFunc1 = &ProcessHandler::Task;
p_Processor->AddJob(pFunc1,10);
但它给出了错误
错误:没有用于调用 Processor::AddJob(void* (ProcessHandler:: &)(void ), int)' Processor.h:47 的匹配函数:注意:候选者是:int Processor::AddJob(void* ( )(无效),无效*)
有人可以帮我解决这个问题吗?我的实现如下。(不是确切的代码 - 它比这大得多)
class Processor
{
public:
Processor();
virtual ~Processor();
int AddJob(void *(*_pFunc)(void*), void* _pArg);
};
int Processor::AddJob(void *(*_pFunc)(void*), void* _pArg)
{
//Job addition related code goes here
}
/////////////////////////////////////////////////////////////////////////////
typedef void* (ProcessHandler::*TaskFunc)(void*);
class ProcessHandler
{
public:
ProcessHandler(Processor* _pProcessor);
virtual ~ProcessHandler();
void* Task(void* a);
void Init();
private:
Processor* p_Processor;
};
void* ProcessHandler::Task(void* a)
{
//Task related code goes here
}
void ProcessHandler::Init()
{
TaskFunc pFunc1 = &ProcessHandler::Task;
p_Processor->AddJob(pFunc1,10); //This give the compile error.
}
/////////////////////////////////////////////////////////////////////////
int main()
{
Processor* pProcessor = new Processor();
ProcessHandler* pProcessHandler = new ProcessHandler(pProcessor);
pProcessHandler->Init();
}