Ich habe Code, wo Objekte, die in einem separaten Thread ausgeführt werden sollen, von einer Basisklasse mit einer rein virtuellen Funktion Run
abgeleitet sind. Ich kann Folgendes nicht erhalten (vereinfachter Testcode), um den neuen Thread auszuführen.
Der Code kompiliert gut (das ist die halbe Miete), aber "Hallo" wird nie gedruckt. Wenn ich etwas falsch mache, würde ich irgendwann einen Laufzeitfehler erwarten. Ich benutze gcc.
Bearbeiten: Der obige Code kann nicht auf VS2012 kompiliert werden mit:
error C2064: term does not evaluate to a function taking 0 arguments
Sie müssen ein Lambda anstelle von std::ref
verwenden, d. h.
Sie müssen die Befehlszeile "-pthread" zur g ++ - Befehlszeile hinzufügen, wie in dieser Antwort auf eine ähnliche Frage erläutert: Ссылка .
Tags und Links c++ multithreading c++11 visual-studio-2012