C++中的线程函数如何访问类中的成员变量
展开全部
有两种方法:a.
定义线程函数为全局函数
b.
定义线程函数为类的静态成员函数
针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个适配器,在适配器中调用类的非静态成员函数。例如:
class
CMyClass{public:
void
TestFunc();
static
int
ThreadFunc(LPVOID
pParam);//
Adapterprotected:
int
ThreadFuncKernal();//
Kernal}void
CMyClass::TestFunc(){
AfxBeginThread(TreadFunc,
this);}//
Thread
function
Adapter
int
CMyClass::ThreadFunc(LPVOID
pParam){
CMyClass
*pObj
=
(CMyClass
*)pParam;
return
pObj-ThreadFuncKernal();}//
Thread
function
kernal
int
CMyClass::ThreadFuncKernal(){while(1){
定义线程函数为全局函数
b.
定义线程函数为类的静态成员函数
针对线程函数为类的静态成员进行说明。如果是静态数据成员,当然可以直接访问,但是如果要访问非静态数据成员,直接访问是做不到的。如果要想在线程函数中访问和操作类的非静态成员变量,可以把线程函数作为一个适配器,在适配器中调用类的非静态成员函数。例如:
class
CMyClass{public:
void
TestFunc();
static
int
ThreadFunc(LPVOID
pParam);//
Adapterprotected:
int
ThreadFuncKernal();//
Kernal}void
CMyClass::TestFunc(){
AfxBeginThread(TreadFunc,
this);}//
Thread
function
Adapter
int
CMyClass::ThreadFunc(LPVOID
pParam){
CMyClass
*pObj
=
(CMyClass
*)pParam;
return
pObj-ThreadFuncKernal();}//
Thread
function
kernal
int
CMyClass::ThreadFuncKernal(){while(1){
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询