在C++类里面创建线程,如何传别的参数进去?
1个回答
展开全部
貌似在线程中并不能直接调用类里面的参数,即使调用了也只是类中函数的形式,并无内容。一般参数想在线程中被调用,就要new一个公用的内存空间供线程调用。以工作线程为例:
线程函数首先在类中声明
_beginthreadex( NULL, 0, yourfunc, this, 0, 0 );
(this指向类本身,比如是C**Dlg类)
线程函数UINT C**Dlg::yourfunc(void * pParam)中,pParam就为C**Dlg指针
通过强制转换提取:C**Dlg *p = (C**Dlg*)pParam;中的p就得到对应指针
之后通过p->就可以直接调用C**Dlg类中所使用的所有参数和函数(当然需要使用的参数必须在类中new过并赋值之后才能使用,参数使用完毕之后别忘了delete来释放开辟的内存)
线程函数首先在类中声明
_beginthreadex( NULL, 0, yourfunc, this, 0, 0 );
(this指向类本身,比如是C**Dlg类)
线程函数UINT C**Dlg::yourfunc(void * pParam)中,pParam就为C**Dlg指针
通过强制转换提取:C**Dlg *p = (C**Dlg*)pParam;中的p就得到对应指针
之后通过p->就可以直接调用C**Dlg类中所使用的所有参数和函数(当然需要使用的参数必须在类中new过并赋值之后才能使用,参数使用完毕之后别忘了delete来释放开辟的内存)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询