2010.8.21 关于RUNTIME_CLASS 不懂就问,不要自欺欺人!

BOOL CtestDlgApp::InitInstance()

{

    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CtestDlgDoc),
    RUNTIME_CLASS(CMainFrame),       // 主 SDI 框架窗口
    RUNTIME_CLASS(CtestDlgView));

}

 

这个东西始终不懂是什么意思,做什么用的?

一、

RUNTIME_CLASS
Use   this   macro   to   get   the   run-time   class   structure   from   the   name   of   a   C++   class.
例如:CRuntimeClass*   prt   =   RUNTIME_CLASS(   CAge   );


RUNTIME_CLASS   returns   a   pointer   to   a   CRuntimeClass   structure   for   the   class   specified   by   class_name.   Only   CObject-derived   classes   declared   with   DECLARE_DYNAMIC,   DECLARE_DYNCREATE,   or   DECLARE_SERIAL   will   return   pointers   to   a   CRuntimeClass   structure.

RUNTIME_CLASS(  
class_name   )

得到一个CRuntimeClass结构指针,一般和IsKindOf和创建时用
//   in   .H   file
class   CPerson   :   public   CObject
{
        DECLARE_DYNAMIC(   CPerson   )
public:
        CPerson(){};

        //   other   declaration  
};

//   in   .CPP   file
IMPLEMENT_DYNAMIC(   CPerson,   CObject   )

void   SomeFunction(void)
{
CObject*   pMyObject   =   new   CPerson;

if(pMyObject-> IsKindOf(   RUNTIME_CLASS(   CPerson   )   )   )
{
//if   IsKindOf   is   true,   then   cast   is   all   right
CPerson*   pmyPerson   =   (CPerson*)   pMyObject   ;
...
delete   pmyPerson;
}
...
delete   [MyObject];
}

Example
//   example   for   RUNTIME_CLASS
CRuntimeClass*   prt   =   RUNTIME_CLASS(   CAge   );
ASSERT(   lstrcmp(   prt-> m_lpszClassName,   "CAge "   )     ==   0   );

 

转载于:https://www.cnblogs.com/peijihui/archive/2010/08/21/1805111.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值