解决方案 »

  1.   

    CRuntimeClass  这个是个描述类关系的链表  会一级级往上查询 每个子类都会把自己添加到基类下面
      

  2.   


    pClass(也就是CWinApp::classCWinapp的指针)是一直不变的,pClassThis是不断变化的, 会一级级往上查询与pClass(也就是CWinApp::classCWinapp的指针)比较,是这样吗,弱弱的问一句,如果是这样,他是不是就写错了
      

  3.   

    pClass是一直不变的,pClassThis是不断变化的, 会一级级往上查询与pClass(也就是CWinApp::classCWinapp的指针)比较,那他是不是就写错了呢可是勘误里没有,那肯定是我理解错了,求解。。
      

  4.   

    #define _DECLARE_DYNAMIC(class_name) \
    public: \
    static CRuntimeClass class##class_name; \
    virtual CRuntimeClass* GetRuntimeClass() const; \GetRuntimeClass() 返回的是类的一个静态成员变量地址
      

  5.   


    pClass(也就是CWinApp::classCWinapp的指针)是一直不变的,pClassThis是不断变化的, 会一级级往上查询与pClass(也就是CWinApp::classCWinapp的指针)比较,是这样吗,弱弱的问一句,如果是这样,他是不是就写错了pClass 是你传的 pClassThis是自己保存的  比方说你 C继承B继承A   那么你定义个C c;  c.IsKindOf (RUNTIME_CLASS(A));这里pClass就是A类的类层次信息  pClassThis就是C类的   也就是pClassThis->m_pBaseClass->m_pBaseClass 其实就等于pClass了
      

  6.   


    pClass(也就是CWinApp::classCWinapp的指针)是一直不变的,pClassThis是不断变化的, 会一级级往上查询与pClass(也就是CWinApp::classCWinapp的指针)比较,是这样吗,弱弱的问一句,如果是这样,他是不是就写错了pClass 是你传的 pClassThis是自己保存的  比方说你 C继承B继承A   那么你定义个C c;  c.IsKindOf (RUNTIME_CLASS(A));这里pClass就是A类的类层次信息  pClassThis就是C类的   也就是pClassThis->m_pBaseClass->m_pBaseClass 其实就等于pClass了那就是说pClassThis(也就是C一个静态成员变量地址)是不断变化的, 会一级级往上查询与pClass(也就是A一个静态成员变量地址)相比较,最后发现等式成立。
      

  7.   


    pClass(也就是CWinApp::classCWinapp的指针)是一直不变的,pClassThis是不断变化的, 会一级级往上查询与pClass(也就是CWinApp::classCWinapp的指针)比较,是这样吗,弱弱的问一句,如果是这样,他是不是就写错了pClass 是你传的 pClassThis是自己保存的  比方说你 C继承B继承A   那么你定义个C c;  c.IsKindOf (RUNTIME_CLASS(A));这里pClass就是A类的类层次信息  pClassThis就是C类的   也就是pClassThis->m_pBaseClass->m_pBaseClass 其实就等于pClass了那就是说pClassThis(也就是C一个静态成员变量地址)是不断变化的, 会一级级往上查询与pClass(也就是A一个静态成员变量地址)相比较,最后发现等式成立。是的 
    while (pClassThis != NULL)
    {
    if (pClassThis == pClass)
        return    TURE;
    pClassThis = pClassThis->m_pBaseClass;
    }  这个循环不就是pClassThis一级级往上找么...