Можно ли в C++ передать в шаблон не только имя типа, но и имя метода?
Вот исходник, который по понятным причинам не работает:
template<class T, class M> class CRN
{
public:
CRN(T* pObject)
{
m_pObject = pObject;
}
void Notify()
{
m_pObject->M();
}
protected:
T* m_pObject;
};
Планировалось его использовать следующим образом:
class C {
...
void SetEventHandler(CRN* pHandler);
...
void OnEvent()
{
pHandler->Notify();
}
};
void Lalamba(C* p, Object* pObject)
{
p->SetEventHandler(new CRN<Object, Method>(pObject))
}
Что приводило бы к вызову метода Method у экземпляра, указуемого p.
Как можно решить эту проблему в общем случае?