// // Example code for CTBcallback // #include "CTB.hxx" #include "CTBprintf.hxx" #include "CTBcallback.hxx" //------------------------------------------+----------------------------------- class sub { public: sub(); void Set_i(int i); int Get_i() const; CTBcallbackSource1<int> CSnew_i; private: int m_i; }; class obs { public: obs(); CTBcallbackTarget1<obs,int> CTnew_i; void New_i(int i); }; //------------------------------------------+----------------------------------- sub::sub() : m_i(0) {} void sub::Set_i(int i) { m_i = i; CSnew_i(m_i); } int sub::Get_i() const { return m_i; } //------------------------------------------+----------------------------------- obs::obs() : CTnew_i(this, &obs::New_i) {} void obs::New_i(int i) { cout << "New_i called: i= " << i << endl; } //------------------------------------------+----------------------------------- int main(int, char*) { sub* p_s = new sub; obs* p_o1 = new obs; obs* p_o2 = new obs; p_s->Set_i(17); p_o1->CTnew_i.Connect(p_s->CSnew_i); p_s->Set_i(18); p_o2->CTnew_i.Connect(p_s->CSnew_i); p_s->Set_i(19); delete p_o1; p_s->Set_i(20); delete p_s; delete p_o2; return 0; }