我想传递一个函数指针,但我不断收到编译器错误。我通常不传递函数指针,但是这种情况需要它。我认为你只需要看看声明来看看我做错了什么。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