クラス Manager とクラス Base があります (Base から派生したサブクラスを持ち、たとえば A : public Base)。Manager 内で Base の適切なサブクラスを作成しますが、Base は Manager の存在を認識しません。この作成された Base のサブクラスに、A オブジェクトが呼び出す Manager クラスのメンバー メソッドにバインドされた関数オブジェクトを渡したいと思いました。つまり、作成中は次のようになります。
void Manager::createThing()
{
FunctionObject func;
if (doExtraWork)
func.bind(&Manager::someMethod, this);
Base *bla = new A(func);
}
次に、A の内部で、マネージャーに引き継がせる余分な作業があるかどうかを検出できるようにしたいと思います。たとえば、次のようになります。
A::update()
{
if (func) //ideally detect if func was bound to someMethod or func is empty
func(this); //equivalent to the above instance of manager calling someMethod on this instance of A
//do regular stuff after;
}
これを行うにはどうすればよいですか(おそらくブースト機能などを使用して)?