Klassenfunktion mit Parameter als Thread
-
Moin!
Folgenden Code habe ich:
class cfunktion() { public: void addmessage(std::string stext); } int main() { // Wie muss ich die Funktion "addmessage" als Task hinschreiben? // ohne Parameter wäre es: // std::thread t1(&cfunktion::addmessage, &cfunktion); return 0; }Vielen Dank im Voraus!
-
Guten Abend @no_name1991
#include <iostream> #include <thread> #include <string> class Cfunktion { public: void addmessage(std::string stext) { std::cout << "Nachricht: " << stext << std::endl; } }; int main() { Cfunktion obj; // Wir brauchen ein Objekt der Klasse std::string msg = "Hallo Welt"; // Syntax: std::thread(Funktionsadresse, Objektadresse, Parameter1, Parameter2, ...) std::thread t1(&Cfunktion::addmessage, &obj, msg); t1.join(); // Warten, bis der Thread fertig ist return 0; }Hab Deine Frage an ne KI weitergegeben. So lernen wir und diese
.Wenn mehrere Threads die Methode aufrufen sollen, schau Dir auch mal "mutex" an.
-
@Helmut-Jakoby sagte in Klassenfunktion mit Parameter als Thread:
// Wir brauchen ein Objekt der Klasse
Das ist nicht korrekt.
Er kann einfach eine Lambda-Funktion verwenden, und in ihr die Funktion auf dem Objekt (std::thread / Cfunktion) aufrufen.
Ein ähnliches Thema gab es hier erst kürzlich. Dynamische Parameterbindung und so.
-
Das wäre dann in etwa wie folgt: https://www.c-plusplus.net/forum/post/2624561
-
Vielen Dank.
Die Antworten haben mir sehr geholfen.