C++ である種のイベント ハンドラーを作成しようとしています。だから私は次のものを持っています:
template<class W>
delegate<W>* bind(W* obj, void (W::*f)(char*))
{
return new delegate<W>(obj,f);
}
デリゲート クラスとこの関数は完全に機能します。問題は、バインド関数で返されるデリゲート オブジェクトを格納する方法ですか? ブーストと C++ 11 を使用すると非常に簡単であることはわかっていますが、それらを使用せずにこれを解決するにはどうすればよいですか? ブーストや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*)
{
}
}