我有一个类成员函数,我希望在std :: thread中运行,并且它需要一个函数作为参数,如下所示:
ModbusAgent::poolingThread(int position, std::function<int(int, uint16_t*)> readFunction)
所以问题是:如何实例化一个std :: thread来调用它?
答案 0 :(得分:-2)
所以这就是我找到的方式:
class A {
public:
int bar(int, uint16_t*) { return 0; }
void foo(int position, std::function<int(int, uint16_t*)> readFunction) {
readFunction(position, nullptr);
}
void b() {
std::function<int(int, uint16_t*)> readFunction = std::bind(&A::bar, *this, std::placeholders::_1, std::placeholders::_2);
std::thread(&A::foo, this, 5, readFunction);
}
};
int main() {
A a;
a.b();
}