海上钢琴师

色彩的图画

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  1 Posts :: 8 Stories :: 0 Comments :: 0 Trackbacks

常用链接

留言簿

我参与的团队

搜索

  •  

最新评论


class AuServant;
class AuPhysicsBase
{
public:
    AuServant *m_pHired;
};


//>PhysicsBase的仆人类,为雇主实现特定功能
class AuServant
{
public:
 AuServant(AuPhysicsBase * a);
 ~AuServant();
 
 virtual void DoThings(){}
protected:
 AuPhysicsBase * m_pHost;
 
};

AuServant::AuServant(AuPhysicsBase *a)
{
 m_pHost = a;
}

#define DECLARE_PHYSICSBASEHIRED_CLASS( classname, hostclassname)       \
class classname: public AuServant            \
{                    \
public:                   \
 classname(hostclassname *pHost):AuServant(pHost){}       \
 void    DoThings();                          \
};
                   

DECLARE_PHYSICSBASEHIRED_CLASS(AuNewThinker , AuPhysicsBase)


class AuMine: public AuPhysicsBase
{
public:
 void Think(){m_pHired->DoThings();}

};


void AuNewThinker::DoThings()
{
 AuMine *m_thinker = static_cast<AuMine*>(m_pHost);
 int a = 0;
}

int main()
{
 AuMine *a = new AuMine();
    AuNewThinker* think = new AuNewThinker(a);
 a->m_pHired = think;
    a->Think();
}// : baseclassname(pHost) 

posted on 2008-05-06 16:50 海上钢琴师 阅读(65) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理