[英]C++ passing a function pointer twice causing issues
我有一個試圖傳遞給類方法的函數指針,在該方法中將調用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
缺少參數,返回類型不同),因此會出現錯誤。
該錯誤未顯示的另一個錯誤: FuncPointer
的返回類型與IOThreadPool::Task
接受的參數的返回類型不匹配(void vs void *)。
解決方案:聲明instad
void* ranfom_function(void*)
和
void* (*FuncPointer)(void*)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.