std::thread <unresolved overloaded function type> - Fehler
Ich versuche zu spawnen, einen thread aus meiner Klasse und der thread führt eine bestimmte Methode in meiner Klasse. Der code sieht so aus:
class ThreadClass{
int myThread(int arg){
//do something
}
void createThread(){
thread t = thread(myThread,10);
}
} ;
Diesen code bei der Kompilierung ein Fehler ausgegeben, die sagen
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)’
Ich bin nicht sicher, was ist der eigentliche Fehler hier. Kann mir jemand helfen mit diesem?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass eine member-Funktion kann nicht aufgerufen werden ohne ein Objekt. Bieten einen Zeiger auf
this
so dass das aktuelle Objekt verwendet wird:Könnte man verwenden um eine Instanz einer beliebigen
ThreadClass
Objekt, aber in Ihrem Fall scheint esthis
ist die richtige Sache zu tun.HINWEIS: denken Sie Daran, Sie müssen eine Referenz auf den erzeugten thread, so dass Sie tun können, eine
join()
später auf.