私は次のように定義された関数ポインタを持っています:
typedef void (*EventFunction)(int nEvent);
C ++オブジェクトの特定のインスタンスでその関数を処理する方法はありますか?
class A
{
private:
EventFunction handler;
public:
void SetEvent(EventFunction func) { handler = func; }
void EventOne() { handler(1); }
};
class B
{
private:
A a;
public:
B() { a.SetEvent(EventFromA); } // What do I do here?
void EventFromA(int nEvent) { // do stuff }
};
編集: Orionは、Boostが提供する次のようなオプションを指摘しました。
boost::function<int (int)> f;
X x;
f = std::bind1st(
std::mem_fun(&X::foo), &x);
f(5); // Call x.foo(5)
残念ながら、ブーストは私にとってオプションではありません。メンバー関数へのポインターを通常の関数ポインターにラップするこの種のC++で記述できる、ある種の「カリー化」関数はありますか?