template <typename T>
struct EventMemberImplObjTraits<T *>
{ static T &GetReference (T *p) { return *p; }
};
template <typename MEM, typename OBJ>
Event*
MakeEvent (MEM mem_ptr, OBJ obj)
{ class EventMemberImpl0 : public Event
{ public:
EventMemberImpl0 (OBJ obj, MEM function) :
m_obj (obj), m_fun tion ( fu n ction) {}
virtual ~EventMemberImpl0 () {}
private:
virtual void RunEvent (void)
{
(EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) ();
}
OBJ m_obj;
MEM m_function;
}
* ev = new EventMemberImpl0 (obj, mem_ptr);
return ev;
}
这里有两句话前后关联,不知道这么理解,求指教.
static T &GetReference (T *p) { return *p; }
EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) ();
我以为GetReference 是函数,T*为型参,返回T 类型的引用,这里也就是*p
但是下一句是不懂是怎么回事儿.
struct EventMemberImplObjTraits<T *>
{ static T &GetReference (T *p) { return *p; }
};
template <typename MEM, typename OBJ>
Event*
MakeEvent (MEM mem_ptr, OBJ obj)
{ class EventMemberImpl0 : public Event
{ public:
EventMemberImpl0 (OBJ obj, MEM function) :
m_obj (obj), m_fun tion ( fu n ction) {}
virtual ~EventMemberImpl0 () {}
private:
virtual void RunEvent (void)
{
(EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) ();
}
OBJ m_obj;
MEM m_function;
}
* ev = new EventMemberImpl0 (obj, mem_ptr);
return ev;
}
这里有两句话前后关联,不知道这么理解,求指教.
static T &GetReference (T *p) { return *p; }
EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) ();
我以为GetReference 是函数,T*为型参,返回T 类型的引用,这里也就是*p
但是下一句是不懂是怎么回事儿.