如何在线程内调用类的方法?我有一个简单的类方法和一个简单的线程...如何在线程内执行de方法?遵循代码...

#include <iostream>
#include<thread>

using namespace std;

class Airplaine{
      public:

      int vel = 0;

      void impress(){ cout << "my impress";} // meu método
};

int main(){

        Airplaine *av1=new Airplaine();

       thread first(meu_method_impress()_here); // my method impress inside a thread

       first.detach();

      return 0;
}

最佳答案

为了补充@Pete的答案,您可以绑定(bind)成员函数并为您的线程供电,就像接受对象作为其参数的普通函数一样。

Airplaine* av1 = new Airplaine;
std::function<void(Airplaine*)> func = std::bind(&Airplaine::impress, std::placeholders::_1);
std::thread first(func, av1);
first.join();
functional header 是必需的。

或者,您可以使用lambda函数:
auto f = [](Airplaine* av) {av->impress(); };
std::thread first(f, av1);

10-07 20:15