2
我正在刷新一些被遺忘的關於指向函數的指針的概念,以創建某種包裝類來處理回調調用。關於此代碼的含義
在谷歌衝浪後,我發現這個簡單而有趣的帖子 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);
}
};
到目前爲止,我沒有理解德爾的概念,但我不記得的意思:: *
我知道,propablythisisavery基本和愚蠢的問題,所以請好。
此致
這是一個成員函數指針 –