0

クラス A はクラス B にアクセスできます。

クラス B の関数で、クラス A で定義された関数を呼び出し、クラス B から引数を渡したいと思います。

したがって、クラス AI では、クラス B に目的の機能を提供するために次のように記述してみてください。

A::provideFunction
{
    boost::function<void()> f = boost::bind(&A::Foo,this,boost::ref(&B::_param1,B::instance()),boost::ref(&B::_param2,B::instance())));
    B::instance()->provideFunction(f);
}

クラス B では、関数を呼び出すだけです。

B::callFunction()
{
    _param1 = "A";
    _param2 = "B";
    _f();
}

私が抱えている問題は、boost:ref が 1 つの引数しか期待しないことです...この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

データ メンバーへのポインターを取得するには、 を実行するのではなく、 を実行する&T::fooだけです&obj->foo。参照ラッパーを取得するには、ref(obj->foo).

B* b = B::instance();
boost::function<void()> f = boost::bind(
    &A::Foo, this, boost::ref(b->_param1), boost::ref(b->_param2)
);
b->provideFunction(f);

また、設計を再考してください。シングルトンも、この奇妙な隠れた暗黙の引数も良くありません。

于 2011-11-09T18:59:55.577 に答える