C++中的线程函数如何访问类中的成员变量

2024-11-16 05:21:39
推荐回答(1个)
回答1:

有两种方法: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){