boost::thread in Klasse
-
Abend!
Also, ganz fix mein Problem:
Ich habe in ener Klasse verschiedene Funktionen, davon soll eine die andere als Thread aufrufen. Das ganze sieht dann etwa so aus://MyClass.h #ifndef __MYCLASS__ #define __MYCLASS__ #include <boost/thread.hpp> class MyClass { private: void myFunction(); void myThreadFunction(); boost::thread myThread(); }; #endif //MyClass.cpp #include "MyClass.h" void MyClass::myFunction { int foo = 32; int bar = 21; int fooBar = foo + bar; myThread(); int barFoo = fooBar * (foo - bar); myThread.join(); } void MyClass::myThreadFunction() { //Irgendwas machen } boost::thread myThread() { return boost::Thread(myThreadFunction); }
So, wenn ich das nun kompiliere spuckt der Compiler (VC++ 2008, muss aber halbwegs Plattforumunabhängig bleiben, daher boost) mir nur einen C3867 aus und sagt es würde in Zeile 38 die Argumentliste fehlen, ich solle doch bitte ein & verwenden um einen Zeiger zu bekommen. Wenn ich das mache (return boost::Thread(&myThreadFunction)), dann erhalte ich nur einen error C2276: '&': Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion.
Das ganze muss jedoch innerhalb der Klasse laufen, sonst wird das ganze echt haarig, ich kann das nicht global deklarieren.
Any ideas?
-
boost::bind sollte das lösen.
-
Vielleicht mal die Doku zu boost::thread lesen?
In diesem einfachen Fall:
//MyClass.h #ifndef __MYCLASS__ #define __MYCLASS__ #include <boost/thread.hpp> class MyClass { private: void myFunction(); void myThreadFunction(); }; #endif //MyClass.cpp #include "MyClass.h" void MyClass::myFunction { int foo = 32; int bar = 21; int fooBar = foo + bar; boost::thread myThread(boost::bind(&MyClass::myThreadFunction, this)); int barFoo = fooBar * (foo - bar); myThread.join(); } void MyClass::myThreadFunction() { //Irgendwas machen }
-
gelesen ja, aber wohl nicht richtig
Danke euch.