我是一名初学者C++程序员,正在Linux机器上编程。
我遇到了这个错误:
我遇到了这个错误:
cannot convert ‘void* (Network::*)(void*)’ to ‘void* (*)(void*)’ for argument ‘3’ to ‘int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)
这句话的意思是:它来自于这一行:
pthread_create(&thread_id,0,&Network::SocketHandler, (void*)csock );
我要调用的函数是:
void* Network::SocketHandler(void* lp)
我在头文件中将这两个函数声明为私有。
你们有没有看出我的错误?
pthread_create()
的最后一个参数将this
指针传递给该static
方法。可以将csock
值存储为Network
类的成员,并通过this
指针访问该值,或者将两个值存储在动态分配的struct
中,该static
方法在使用完毕后释放它。 - Remy Lebeaustd::thread
即可。 - Seth Carnegie