#include "iostream.h"
class CHandle
{
public:
CHandle(){}
virtual ~CHandle(){}
public:
virtual void SetHandle(CHandle *handle){};
virtual void ProcessHandle(int a){} ;
public:
CHandle *m_hand;
};
class CHandle1 : public CHandle
{
public:
CHandle1(){}
~CHandle1(){}
public:
void SetHandle(CHandle *handle){m_hand = handle;}
void ProcessHandle(int a)
{
if (a >= 0 )
{
cout<<a<<endl;
}
else
{
m_hand->ProcessHandle(a);
}
}
};
class CHandle2 : public CHandle
{
public:
CHandle2(){}
~CHandle2(){}
public:
void SetHandle(CHandle *handle){m_hand = handle;}
void ProcessHandle(int a)
{
if (a >= 10 )
{
cout<<a<<endl;
}
else
{
m_hand->ProcessHandle(a);
}
}
};
void main()
{
CHandle1 *ha1 = new CHandle1();
CHandle2 *ha2 = new CHandle2();
ha1->SetHandle(ha2);
ha1->ProcessHandle(10);
}