SarKerson 2016-05-16 15:00 采纳率: 50%
浏览 4237

c++,关于类成员函数作为线程的入口函数

class Map {
public:
Bird *pB;
Pig *pP;
..........
}
class Grav {
public:
Map *pM;
......
void runBird(Bird &b);
void runPig(Pig &p);
void run(Map &m);
}
void Grav::run(Map &m) {
thread t[2];
t[0] = thread(&Grav::runBird, std::ref(m.pBird[0]));
t[1] = thread(&Grav::runPig, std::ref(m.pPig[0]));
t[0].join();
t[1].join();
}

然后就出现了以下问题,查了好多,有一方法:把runBird(),runPig()改为static,但这样不好,或者说在我这个程序里不可行。

Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)' AngryBird h:\visual studio\vc\include\type_traits 1501

求助!万分感谢!

  • 写回答

4条回答 默认 最新

  • Robot-C 2016-05-16 15:13
    关注

    线程入口函数可以是类成员函数吗? 貌似不行,只能是全局函数或者类的静态成员函数。 但是,可以在开辟线程时将this指针传递给线程入口函数,然后再调用类成员函数。 // 子线程入口DWORD WINAPI ThreadProc( LPVOID lpParameter ){ // 调用CCamProjDlg类成员函数 ((CCamProjDlg*)lpParameter......
    答案就在这里:线程入口函数可以是类成员函数吗?
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名