C++线程访问类成员
来源:互联网 发布:淘宝卖家保证金 编辑:程序博客网 时间:2024/04/29 19:45
当你想用线程函数调用类的成员函数时,需要将线程函数声明为类的static成员。由于线程函数是一个由系统调用的函数,所以是一个callback函数,所以他不能有this 指针,所以你的线程函数要么是全局函数,要么是类的静态成员。
将线程函数申明为静态,如:
class CRealtimeTask
{
public:
static UINT taskmain(LPVOID param);
BOOL StartTask();
};
但是这样存在着缺陷,也有好处,好处是能够在调用函数时用param传入this指针,然后在线程函数中用类型转换转换成指向该类的指针,这时该指针就能够访问非静态变量和私有变量了并且可以将线程函数配置为 private,就能够完全隐藏,配置为protected,能够被子类调用或定制,
还有一种好的解决办法:将线程函数申明成友员函数,这样能够传入该类的指针,访问类的成员,
class CRealtimeTask
{
public:
friend UINT taskmain(LPVOID param);
BOOL StartTask();
};
UINT taskmain(LPVOID param)
{
CRealtimeTask * pTaskMain = (CRealtimeTask *) param;
//通过pTaskMain指针引用。
return TRUE;
}
BOOL CRealtimeTask::StartTask()
{
AfxBeginThread(taskmain,this);
}
- C++线程访问类成员
- C++线程访问类成员
- 关于线程访问类成员的问题
- 类成员的访问控制(C++)
- C++:类的成员访问权限控制
- 【C++】:C++中的类成员访问权限
- 一种在线程函数里面访问类成员的方法
- C++中的线程函数如何访问类中的成员变量
- C++中的线程函数如何访问类中的成员变量
- C++中的线程函数如何访问类中的成员变量
- C++中的线程函数如何访问类中的成员变量
- 类成员CALLBACK函数 或 线程函数 访问 类成员变量
- linux C++ 类成员函数中创建线程,且能访问类中其他成员变量
- C++:private成员的访问
- 线程的静态函数如何访问类的非静态成员函数或成员变量
- 线程里面访问私有成员变量 ,ok
- [C++]BOOST_PP_SEQ_FOR_EACH_I根据enum值访问类的不同成员
- 访问私有类成员
- 洒脱是不以世情俗务烦心,做应该做的事
- 程序调试
- CCS中gel文件的作用
- access 追加查询
- 学生成绩程序
- C++线程访问类成员
- StringUtils.java应用,非常不错的字符串处理类
- 解决 FtpClient 类无法导入
- C#操作xml 【不错的文章,入门推荐】
- IP地址的转换
- 《The C Programming Language》学习笔记
- Winsock学习笔记
- 用buildroot创建交叉编译环境
- 关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法