[gelöst] boost::thread t(methode)
-
Hallo!
Ich hab das Problem, dass ich keinen Boost Thread erstellen kann.
Beziehungsweise im speziellen, keinen Thread mit einer Methode meiner Klasse.void myclass::listen() { ip::tcp::endpoint endpoint(ip::tcp::v4(), atoi(port)); ip::tcp::acceptor acceptor(io_input, endpoint); try { for (;;) { socket_ptr sock(new ip::tcp::socket(io_input)); acceptor.accept(*sock); boost::thread t(boost::bind(session, sock)); } } catch (std::exception& e) { std::cerr << e.what() << std::endl; } io_input.run(); } int main(int argc, char *argv[]) { myclass classObj; boost::thread t(test); boost::thread t2(myclass::listen); t.join(); t2.join(); return 0; }Die auftretende Fehlermeldung: Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&myclass::listen", um einen Zeiger auf den Member zu erstellen.
Jedoch auch das besagt & führt zu einem Fehler: '&': Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion
Der erste Thread "t" funktioniert jedoch ganz normal (wenn ich das andere auskommentiere).
Ich habe auch versucht, die Threads in einer Methode der Klasse zu erstellen, allerdings mit dem selben Ergebnis.
Könnt ihr mir weiterhelfen?
-
keinen Thread mit einer Methode meiner Klasse
Und mit welchem Objekt soll die Methode aufgerufen werden? http://www.parashift.com/c++-faq-lite/pointers-to-members.html
-
Vielen Dank, konnte das Problem mit einer wrapper Methode lösen!