由于建立线程时,不能使用类中的函数,导致不能在线程中使用对象的属性,故需要将 对象 作为参数传给线程参数:
void* ServerAccept(void* object)
{for(;;){
struct sockaddr_in sockclient;
int socknew = accept( ((server*)object)->socketfd, (struct sockaddr*)&sockclient, 0 );
pthread_t newpthread;
pthread_create(&newpthread, 0, AnswerClient, (void*)socknew);
}
}
//((server*)object)->socketfd 正确 ---------- 对象指针->成员名
// (server*)object->socketfd 错误 --------- error: 'void*' is not a pointer-to-object type