我有一個函數指針,我試圖傳遞給一個類方法,其中pthread_create將被調用傳遞該參數。但我收到了一些錯誤,並不確定我想從哪裏出發。C++傳遞函數指針兩次導致問題
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* (*)()
。我很困惑,我的頭已經開始受傷了!
感謝
你能提供random_function嗎?它有正確的簽名? – Dutow