C ++两次传递函数指针导致问题

C++ passing a function pointer twice causing issues

我有一个函数指针,我试图将其传递给 class 方法,其中 pthread_create 将被调用以传递该参数。但是我遇到了一些错误,并且不确定我应该从这里去哪里。

void (*FuncPointer)(void*);
FuncPointer = random_function;
ThreadPool.Task(FuncPointer);


int IOThreadPool::Task(void* (*FuncPointer)(void*))
{
    pthread_t NewThread;

    int rc = pthread_create(&NewThread, NULL, FuncPointer, (void *) (intptr_t) IOThreadPool::Threads.size() + 1);

main.cpp:57:29: error: invalid conversion from ‘void* (*)()’ to ‘void (*)(void*)’ [-fpermissive]

请解释为什么即使我将它作为 void* (*)(void*) 传递,我得到 void* (*)()。我很困惑,我的头已经开始疼了!

谢谢

invalid conversion from ‘void* (*)()’ to ‘void (*)(void*)’

你忘了给我们看random_function的声明,不过从错误信息来看,好像是

void* ranfom_function()

由于函数的签名与 FuncPointer 的签名不匹配(ranfom_function 缺少参数 ,并且 return 类型不同),您得到错误。


错误未显示的另一个错误:FuncPointer 的 return 类型与 IOThreadPool::Task 接受的参数的 return 类型不匹配( void 与 void*).


解决方案:声明 instad

void* ranfom_function(void*)

void* (*FuncPointer)(void*)