gpt4 book ai didi

C++ 仿函数作为函数指针

转载 作者:可可西里 更新时间:2023-11-01 13:29:28 25 4
gpt4 key购买 nike

我有一个 Functor,我需要将其发送到一个接收函数指针作为参数的函数(例如 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);

关于C++ 仿函数作为函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com