我是一名C++程序员,我正在Linux机器上编程。无法将'void *(Network :: *)(void *)'转换为'void *(*)(void *)'
我得到这个错误:
pthread_create(&thread_id,0,&Network::SocketHandler, (void*)csock);
我想调用的函数是:
cannot convert ‘void* (Network::*)(void*)’ to ‘void* (*)(void*)’ for argument ‘3’ to ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)
它是从该行正在添加
void* Network::SocketHandler(void* lp)
我宣布双方在头文件中作为私有函数。
你们有没有看到我做错了什么?
哦,你可能是正确的,他可能并不想连同'Network'使用它。 +1 –
并使用'pthread_create()'的最后一个参数将this指针传递给'static'方法。可以将'csock'值存储为'Network'类的成员,并让'static'方法通过'this'指针到达它,否则将这两个值存储在一个动态分配的'struct'中,该''static'方法释放完成后使用它。 –
C++ 11? pthreads更容易/更好吗?我在哪里可以找到关于C++ 11线程的一些信息? thx – mjcs