正在读侯俊杰的这本大作,第三章MFC六大技术之仿真。关于RTTI,书里面说,“链表的头总是需要特别费心处理,不能够套用一般的链表行为方式。我们的类根源CObject,不能套用现成的宏 DECLARE_DYNAMIC 和 IMPLEMENT_DYNAMIC...”。
    不能用 IMPLEMENT_DYNAMIC 还说得过去,不能用DECLARE_DYNAMIC 就有些奇怪了。我知道自己肯定没读懂,请高手指点。谢谢。

解决方案 »

  1.   

    这两个宏展开后,DECLARE_DYNAMIC定义了运行时类对象,而IMPLEMENT_DYNAMIC是实现,that looks like as below:class CObject
    {
       static CRuntimeClass m_object; // 定义在DECLARE_DYNAMIC
    };// Implementations
    CRuntimeClass CObject::m_object; // 实现在IMPLEMENT_DYNAMICCObject作为根,它是不应该存在运行时对象m_object的, 可以用NULL表示CObject, 这样在指针链表中比较方便. 
    声明和实现是一对的,没有声明就没实现,反之.