次のコードがあるとします。
class A
{
public:
A() {}
int f(void*, void*)
{
return 0;
}
};
template <typename T>
class F {
public:
F(int(T::*f)(void*,void*))
{
this->f = f;
}
int(T::*f)(void*,void*);
int Call(T& t,void* a,void* b)
{
return (t.*f)(a,b);
}
};
A a;
F<A> f(&A::f);
f.Call(a, 0, 0);
これは機能しますが、関数を簡単に呼び出すことができますが、たとえば、型を知らなくてもこれらの配列を取得するにはどうすればよいでしょうか?
任意のクラス f 関数をコールバックとして呼び出せるようにしたいと考えています。通常は静的関数または C 関数を使用して終了しますが、C++ メンバー関数の呼び出しを試してみたかったのです。
私が C# のデリゲートとしてやろうとしていることを考えてみてください。Boost やその他の場所で非常に洗練された実装を見てきましたが、最低限、コピー、作成、削除などを必要とせず、呼び出すことができる単純なコールバックだけが必要です。
これは夢物語ですか?アドバイスをいただければ幸いです。