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,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真