我想傳遞一個函數指針,但我不斷收到編譯器錯誤。我通常不傳遞函數指針,但是這種情況需要它。我認爲你只需要看看聲明來看看我做錯了什麼。C++傳遞函數指針作爲參數
在頭文件我:
pthread_t * createThread(void *(*func)(void *), string arg)
,並在執行這是相同的:
pthread_t * createThread(void *(*func)(void *), string arg)
在調用該函數我這樣做: 的CreateThread(&機能缺失,「再跑一遍」)
而且關於功能的聲明是:
void *afunction(void *ptr) //(no header, same for both declaration and implementation).
但是編譯器吐出了這一點:
Undefined symbols for architecture x86_64:
"createThread(void* (*)(void*), std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
spawnSingleThreadTest() in threadTests.o
createThread的定義在哪裏,它看起來像什麼? – 2012-04-18 08:12:17
是所有這些位於相同的文件(以及如何建立它)? – moooeeeep 2012-04-18 08:12:20
這是一個鏈接器錯誤,這意味着鏈接器無法找到該函數的定義。你在項目中使用過名稱空間嗎?如果有任何問題,請檢查一下。拼寫錯誤,或者您使用了不同的名稱空間來進行聲明和定義? – Nawaz 2012-04-18 08:12:51