Подтвердить что ты не робот

Std:: thread <неразрешенный перегруженный тип функции> ошибка

Я пытаюсь создать поток из моего класса, и поток выполняет определенный метод в моем классе. Код выглядит следующим образом:

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)’

Я не уверен, что здесь является настоящей ошибкой. Может кто-нибудь помочь мне с этим?

Спасибо.

4b9b3361

Ответ 1

Проблема заключается в том, что функция-член не может быть вызвана без объекта. Укажите указатель на this, чтобы использовать текущий объект:

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

Вы можете использовать экземпляр любого объекта ThreadClass, но в вашем случае кажется, что this - это правильная вещь.

ПРИМЕЧАНИЕ. Помните, что вам нужна ссылка на созданный поток, чтобы позднее можно было сделать join().