I have a Functor which I need to send to a function which receives a function pointer as a parameter (such as CreateThread
).
Can I convert it to a static method address somehow? And if not, how can I do it?
No, you can't convert a class-type object to a function pointer.
However, you can write a non-member wrapper function that calls the member function on the right instance. Many APIs, including CreateThread
, allow you to provide a pointer that it will give back to you when it calls your callback (for CreateThread
, this is the lpParameter
parameter). For example:
DWORD WINAPI FunctorWrapper(LPVOID p)
{
// Call operator() on the functor pointed to by p:
return (*static_cast<FunctorType*>(p))();
}
// Used as:
FunctorType f;
CreateThread(0, 0, &FunctorWrapper, &f, 0, 0);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With