C++ 在C+中使用类的线程+;
假设我有一个名为myObject的对象,属于myClass类。它有一个功能C++ 在C+中使用类的线程+;,c++,multithreading,object,C++,Multithreading,Object,假设我有一个名为myObject的对象,属于myClass类。它有一个功能 void myFunction() 使用线程调用此函数的语法是什么 我试过了 std::thread myThread(myObject.myFunction) 但我遇到语法错误,似乎找不到正确的语法 错误消息是: 无法引用函数“std::thread::thread(const std::thread&)”--它是一个已删除的函数 谢谢您的帮助。您可以写: std::thread myThread(std::bi
void myFunction()
使用线程调用此函数的语法是什么
我试过了
std::thread myThread(myObject.myFunction)
但我遇到语法错误,似乎找不到正确的语法
错误消息是:
无法引用函数“std::thread::thread(const std::thread&)”--它是一个已删除的函数
谢谢您的帮助。您可以写:
std::thread myThread(std::bind(&myClass::myFunction, myObject));
作为,myClass
myObject的类名。这是指向成员函数的指针的语法
此外,根据GCC,您可以在
myObject
之后添加myFunction
所需的任何其他参数,错误如下:
这是有意义的,因为成员函数绑定到这个
指针,成员变量等等。我会使用lambda表达式:
std::thread t ([&]{
myObject.myFunction();
})
工作示例:
顺便说一句,这种使用匿名函数包装所有内容的做法在JavaScript中非常常见,在这里也应该尽可能使用
始终指定任何错误消息的确切文本。“我遇到语法错误”。。。。。您应该显示语法错误。
std::thread myThread(&myClass.myFunction, myObject)