假设我有一个名为myObject类myObject的对象。它有一个功能
void myFunction()
用线程调用此函数的语法是什么?
我试过
std::thread myThread(myObject.myFunction)
但我发现语法错误,似乎无法找到正确的语法。
错误消息是:
function" std :: thread :: thread(const std :: thread&)"无法引用 - 它是一个已删除的函数
感谢您的帮助。
答案 0 :(得分:1)
你可以写:
std::thread myThread(std::bind(&myClass::myFunction, myObject));
成为myClass
myObject
的班级名称。这是指向成员函数的指针的语法。
此外,您可以在myFunction
之后添加myObject
所需的任何其他参数。
答案 1 :(得分:0)
根据GCC,这里是错误:http://coliru.stacked-crooked.com/a/4fcba365c9b25d1e
这是有道理的,因为成员函数绑定到this
指针,成员变量等等。我要使用lambda表达式:
std::thread t ([&]{
myObject.myFunction();
})
顺便说一句,这种用匿名函数包装所有内容的做法在JavaScript中很常见,也应该在这里使用
答案 2 :(得分:0)
可能duplicate。
std::thread myThread(&myClass.myFunction, myObject)