#ifndef _publisher_h #define _publisher_h #include using namespace std; class Subscriber { public: virtual void notify() {}; }; class Publisher { private: vector< Subscriber* > subscribers; public: void attach( Subscriber* sub ) { vector< Subscriber* >::iterator i; for( i = subscribers.begin(); i != subscribers.end(); ++i ) { if( *i == sub ) { return; } } subscriber.push_back( sub ); }; void detach( Subscriber* sub ) { vector< Subscriber* >::iterator i; for( i = subscribers.begin(); i != subscribers.end(); ++i ) { if( *i == sub ) { subscribers.erase( i ); return; } } }; void updateAll() { vector< Subscriber* >::iterator i; for( i = subscribers.begin(); i != subscribers.end(); ++i ) { (*i) -> notify(); } }; }; #endif