ピア オブジェクト間の通信を確立するインフラを設計する必要があります。ここでは、すべてのマネージャーがピアであり、誰もお互いを知りません。マネージャーはイベントをサブスクライブし、他のマネージャーはパブリッシュします。マネージャーは他のマネージャーの参照を持たず、発行と購読のみを行います。ディレクターはそれらのマネージャーのみを作成します。
マネージャーがイベントを他の人に送信できるようなインフラを設計するための提案はありますか??
ピア オブジェクト間の通信を確立するインフラを設計する必要があります。ここでは、すべてのマネージャーがピアであり、誰もお互いを知りません。マネージャーはイベントをサブスクライブし、他のマネージャーはパブリッシュします。マネージャーは他のマネージャーの参照を持たず、発行と購読のみを行います。ディレクターはそれらのマネージャーのみを作成します。
マネージャーがイベントを他の人に送信できるようなインフラを設計するための提案はありますか??
Boost.Signals2 ソリューション:
#include <boost/signals2/signal.hpp>
#include <boost/bind.hpp>
#include <iostream>
using namespace boost;
using namespace std;
class Manager{
public:
signals2::signal<void ()> *Msg;
void Foo() { cout << "Foo" << endl;}
};
class Director{
public:
Manager CreateManager() { return Manager();}
};
int main()
{
Director dir;
Manager m1 = dir.CreateManager();
Manager m2 = dir.CreateManager();
m1.Msg = new signals2::signal<void ()>();
m1.Msg->connect(bind(&Manager::Foo, &m2));
(*m1.Msg)();
}