开发者

C++ functor as a function pointer

I have a Functor which I need to send to a function w开发者_运维知识库hich 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);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜