SFML community forums
Help => System => Topic started by: tomas on July 08, 2009, 05:29:44 pm
-
I want to run a class member function in a separate thread. Is there any straightforward way of doing this? An hour of googling and trial-and-error experimenting hasn't helped me in this case. It is obviously not as easy as
sf::Thread Thread(&MyObject.MyFunction);
.
I tried things like
typedef void (SomeClass::*fptr)();
fptr ptrMyFunction;
ptrMyFunction = &SomeClass::MyFunction;
to get the member function pointer, but it doesn't seem to work.
-
You can't. sf::Thread only accepts free function pointers.
But that's the C-style way of using it, you'd better make your class inherit from it (see the tutorial for more informations).
-
OK, I see. I solved it by having a wrapper function with an infinity loop that calls the class member function instead.
-
Looks like an ugly solution. Why don't you make your class privately inherit from sf::Thread instead?
-
Hmm, I wouldn't know how to do that right away, not that experienced with C++. I will look at the tutorials again and try to figure out a good solution. Thanks for the tip.
EDIT: Implemented it in that way now. Works great and is a pretty solution. Thanks.