我正在尝试在 C++ 中创建某种事件处理程序。所以我有以下内容:
template<class W>
delegate<W>* bind(W* obj, void (W::*f)(char*))
{
return new delegate<W>(obj,f);
}
委托类和此功能完美运行。问题是如何存储绑定函数返回的委托对象?我知道使用 boost 和 c++ 11 很容易,但是不使用它们我怎么能解决这个问题呢?我确信它必须是可能的,因为在诸如 boost 和 c++11 之类的复杂事物之前它是可能的。
(他们也以某种方式在提升中做到了)。
所以我想做的是:
class Test1
{
Test1(){}
~Test1(){}
template<class W>
bind(W* obj, void (W::*f)(char*))
{
myCallBack = new delegate<W>(obj,f);
}
private:
delegate * myCallBack; //this does not work because I have to define the template but I dont know it know it could be anything
}
class Test2
{
Test2()
{
Test1 t;
t.bind(this, &Test2::callit);
}
~Test2(){}
void callit(char*)
{
}
}