#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;
}