线程函数和类成员函数

        创建线程时,需要指定线程的入口函数。一般来讲,线程函数为全局函数或静态函数。类的成员函数默认含有this指针作为参数,与线程函数指针类型不匹配,不能将类的成员函数指定为线程函数。如何在线程中执行类的成员函数或者访问数据成员呢?

        最常用的方法就是线程函数还是用全局或静态函数,然后把类对象指针或this作为线程函数参数传入,在线程函数中将void类型参数强转为对应类型,再去操作。

        再一种做法就是将类的静态成员函数作为线程入口函数,这样在线程中就只能访问类的静态成员了。

        或者就在类内定义友元函数,把该友元函数作为线程函数。这样破坏封装性。

      虽然无参的成员函数刚好和线程入口函数类型匹配,但C++不支持将成员函数指针强制转换成其它类型的指针,成员函数ReturnType Class::MemFun();直接强制类型转换FNTHREAD fun= (FNTHREAD)&Class::MemFun; 这样写法将引起编译错误。但尝试发现可以把成员函数指针传给可变参数的函数。这样做就太繁琐了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值