簡體   English   中英

C ++兩次傳遞函數指針導致問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM