我有一个ClassB,它有一个线程对象和一个定义为:
的函数pthread_t m_thWorkThread;
void* ThreadProc(void *);
在ClassB的构造函数中,我创建了一个类似的线程:
pthread_create(&m_thWorkThread, NULL, &(ClassB::ThreadProc), this);
但是我收到两条错误消息:
错误:ISO C ++禁止获取非限定或带括号的非静态成员函数的地址,以形成指向成员函数的指针。
无法将变量*(ClassB :: )(void ) - 转换为变量*()(void )â为参数â3到âintpthread_create(pthread_t *,const) pthread_attr_t *,void *()(void ),void *)â pthread_create(& m_thWorkThread,NULL,&(ClassB :: ThreadProc),this);
但是,如果我将该函数定义为static,则不会抱怨:
static void* ThreadProc(void *);
但是我不希望它是静态的,因为我将创建多个线程,并且我希望每个线程都有一个单独的ThreadProc函数。