コールバックって、メンバー関数をじかに呼べないんですが、

class Aとclass Bがあって
Bは、コールバックされる関数(SetTimerとか)を使っていて、
さらにそのコールバックされる関数の中でBのメンバー関数を呼び出したい。

BにAのインスタンスのポインターを持たせればできますが、
1. Bの実装でAに依存しない(class Aのクラス定義を読み込まない)
2. Aをコールバックされる関数を含んだ中傷クラスのサブクラスとしない

という条件で、うまい方法ってないですか?

現状はtemplateを使って(public,private等は省略)
class base {
 virtual void operaot()() = 0;
};

template<class T>
class callback : public base
{
 typedef void (T::*F)();

 callback(T* obj, F func) : o(obj), f(func) {}
 void operator()() { return o->*f();

 T* o;
 F f;
};

とやって、AはBにcallbackのインスタンスを渡すようにしてますが、今市…