C++ 尝试在c&\x2B中创建简单线程时出错+;
我试图创建一个简单的线程并让它执行 我的函数定义是:C++ 尝试在c&\x2B中创建简单线程时出错+;,c++,multithreading,C++,Multithreading,我试图创建一个简单的线程并让它执行 我的函数定义是: void MyClass::myFunction() { //Do Work } 我正在创建线程并执行它: std::thread t1(myFunction); 编译代码时,出现以下错误: error C3867: function call missing argument list; use '&MyClass::myfunction' to create a pointer to member. 因为我的函数不接受
void MyClass::myFunction()
{
//Do Work
}
我正在创建线程并执行它:
std::thread t1(myFunction);
编译代码时,出现以下错误:
error C3867: function call missing argument list; use '&MyClass::myfunction' to create a pointer to member.
因为我的函数不接受任何参数,所以我假设我在创建线程的地方错误地声明了它?任何帮助都将不胜感激,谢谢 - 如果您的方法是非静态成员:您需要对象的实例来调用成员函数
- 如果您的方法是静态成员,请按照编译器的建议执行:只需传递函数的地址
class A
{
public:
void foo() { cout << "foo"; }
static void bar() { cout << "bar"; }
};
int main() {
std::thread t1(&A::foo, A()); // non static member
t1.join();
std::thread t2(&A::bar); // static member (the synthax suggested by the compiler)
t2.join();
return 0;
}
A类
{
公众:
void foo(){cout
- 如果您的方法是非静态成员:您需要对象的实例来调用成员函数
- 如果您的方法是静态成员,请按照编译器的建议执行:只需传递函数的地址
示例:
class A
{
public:
void foo() { cout << "foo"; }
static void bar() { cout << "bar"; }
};
int main() {
std::thread t1(&A::foo, A()); // non static member
t1.join();
std::thread t2(&A::bar); // static member (the synthax suggested by the compiler)
t2.join();
return 0;
}
A类
{
公众:
void foo(){cout编译器非常明确地说明了在这里要做什么是的,我尝试通过在函数名前面加上&来创建指向成员的指针,例如:std::thread t1(&myFunction);但随后我得到:错误C2276:“&”:绑定成员函数表达式上的非法操作是成员函数静态
?如果不是,则需要将MyClass
的实例作为第一个参数传递给线程。还需要传递指向MyClass
实例的指针。或者,使函数>静态
。我觉得自己很愚蠢,编译器几乎给了我修复错误所需的一切。我使用了:std::thread t1(&MyClass::myFunc);而且它工作正常,谢谢大家!!编译器非常明确地说明了在这里要做什么是的,我尝试通过在函数名前面加上&来创建指向成员的指针,例如:std::thread t1(&myFunction);但随后我得到:错误C2276:“&”:绑定成员函数表达式上的非法操作是成员函数静态
?如果不是,则需要将MyClass
的实例作为第一个参数传递给线程。还需要传递指向MyClass
实例的指针。或者,使函数>静态
。我觉得自己真的很笨,编译器几乎给了我修复错误所需的一切。我使用了:std::thread t1(&MyClass::myFunc);它成功了,谢谢大家!!