C ++函数作为函数指针

我有一个Functor,我需要发送到一个函数接收函数指针作为参数(如CreateThread )。

我可以将它转换为静态方法地址吗? 如果不是,我该怎么办?

不,您不能将类型对象转换为函数指针。

但是,您可以编写一个非成员封装函数来调用正确实例上的成员函数。 包括CreateThread在内的许多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);