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*)
我有一个函数指针,我试图将其传递给 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*)