gpt4 book ai didi

c++ - 关于此代码中::* 的含义

转载 作者:搜寻专家 更新时间:2023-10-31 02:14:20 24 4
gpt4 key购买 nike

<分区>

我正在刷新一些关于函数指针的被遗忘的概念,以创建某种包装类来处理回调调用。

在谷歌浏览后,我发现了这个简单但有趣的帖子 http://blog.coldflake.com/posts/C++-delegates-on-steroids/

到目前为止,我几乎什么都懂,除了这个

    T::*TMethod

我还记得::*的意思,你可以在帖子的很多地方看到,这是作者第一次使用它

class Delegate
{
typedef void (*Type)(void* callee, int);
public:
Delegate(void* callee, Type function)
: fpCallee(callee)
, fpCallbackFunction(function) {}
template <class T, void (T::*TMethod)(int)> <<<<<<First time
static Delegate from_function(T* callee)
{
Delegate d(callee, &methodCaller<T, TMethod>);
return d;
}
void operator()(int x) const
{
return (*fpCallbackFunction)(fpCallee, x);
}
private:
void* fpCallee;
Type fpCallbackFunction;
template <class T, void (T::*TMethod)(int)>
static void methodCaller(void* callee, int x)
{
T* p = static_cast<T*>(callee);
return (p->*TMethod)(x);
}
};

到目前为止,我理解它是如何工作的,但我不记得::* 的含义

我知道这可能是一个非常基本和愚蠢的问题,所以请保持友好。

最好的问候

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