std::线程<未解析的重载函数类型>错误

std::thread <unresolved overloaded function type> error

本文关键字:函数 重载 类型 gt 错误 线程 lt std      更新时间:2023-10-16

我正在尝试从我的类中生成一个线程,并且该线程在我的类中执行特定方法。代码如下所示:

class ThreadClass{
    int myThread(int arg){
     // do something
    }
    void createThread(){
        thread t = thread(myThread,10);
    }
} ;

编译上的这段代码抛出一个错误,指出

std::thread::thread(_Callable&&, _Args&& ...) [with _Callable = int (ThreadClass::*)(int), _Args = {int}]
no known conversion for argument 1 from ‘<unresolved overloaded function type>’ to ‘int (ThreadClass::*&&)(int)’

我不确定这里的实际错误是什么。有人可以帮助我吗?

谢谢。

问题是没有

对象就无法调用成员函数。提供指向this的指针,以便使用当前对象:

thread t(&ThreadClass::myThread, this, 10);

您可以使用任何ThreadClass对象的实例,但在您的情况下,这似乎是正确的做法this

注意:请记住,您需要引用创建的线程,以便以后可以执行join()