Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中使用类的线程+;_C++_Multithreading_Object - Fatal编程技术网

C++ 在C+中使用类的线程+;

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

假设我有一个名为myObject的对象,属于myClass类。它有一个功能

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)