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);它成功了,谢谢大家!!