Нет, вы не можете преобразовать объект типа класса в указатель на функцию.
Однако вы можете написать не обёртную функцию-обертку, которая вызывает функцию-член в нужном экземпляре. Многие API, в том числе CreateThread
, позволяют указывать указатель, который он возвращает вам при вызове вашего обратного вызова (для CreateThread
это параметр lpParameter
). Например:
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);