如何在线程中调用类的方法?我有一个简单的课堂方法和一个简单的线索.如何在线程中执行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;
}发布于 2019-05-25 12:54:52
为了补充@Pete的回答,您可以绑定成员函数并提供线程,就像接受对象作为参数的普通函数一样。
Airplaine* av1 = new Airplaine;
std::function<void(Airplaine*)> func = std::bind(&Airplaine::impress, std::placeholders::_1);
std::thread first(func, av1);
first.join();需要functional头。
或者您可以使用lambda函数:
auto f = [](Airplaine* av) {av->impress(); };
std::thread first(f, av1);发布于 2019-05-25 00:28:37
线程构造函数非常聪明。只需告诉它要调用哪个成员函数,并给它一个调用函数的对象:
Airplane *av1 = new Airplane;
std::thread first(&Airplane::impress, av1);
first.join(); // wait for thread to finish或者,以更像C++的风格:
Airplane av;
std::thread first(&Airplane::impress, av);
first.join(); // wait for thread to finish或者,如果成员函数修改了对象,并且需要在线程完成后看到这些修改,则通过引用传递对象:
Airplane av;
std::thread first(&Airplane::impress, std::ref(av));
first.join(); // wait for thread to finishhttps://stackoverflow.com/questions/56300636
复制相似问题