首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++ 错题集 线程初始化编译报错

这是一个很简单的开启一个线程, 用于演示一个线程和生命周期之间的错误,但是还没有把这个错误暴露出来, 就遇见了一个编译问题. 线程中执行指定逻辑的代码

线程的执行方法, 声明写在了ThreadRun.h 实现写在 ThreadRun.cpp中.

class ThreadRun { public: void func(); };

void ThreadRun::func() { cout << "Thread: " << this_thread::get_id() << " start" << endl; cout << "Thread: " << this_thread::get_id() << " end" << endl; }

main方法调用: 此处出现编译异常,红字代表报错内容

int main() { ThreadRun myClass; //此处报错: //"error: no matching constructor for initialization of 'thread'" thread t1(myClass.func()); t1.join(); return 0; }

函数构造方法传参错误, 在Main.cpp中, 将代码改为

int main() { ThreadRun myClass; // 代码改动处 // thread t1(myClass.func()); thread t1(&ThreadRun::func, &mgClass); t1.join(); return 0; }

总结:

Thread如果绑定的执行逻辑, 是一个类里面的成员函数, 那么thread在初始化的时候, 需要绑定该方法之外, 还需要将其所操作的或者涉及的对象作为参数传入!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O2WTL2SWl4_xfkp1CINruJcA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券