我看了《深入浅出mfc》里面的frame3,我想仿照着写一个类似的程序,我在头文件中定义了DECLARE_DYNAMIC宏,在cpp文件中定义了IMPLEMENT_DYNAMIC宏,可是要实现下面这段代码的时候,发现侯捷老师是自己在头文件中定义了CRuntimeClass,CRuntimeClass本身是没有pFirstClass这个变量的,那是不是说每次要用到链表头的时候,都需要自己在头文件中定义CRuntimeClass?????????还有,是不是在头文件中定义DECLARE_DYNAMIC宏,在cpp文件中定义IMPLEMENT_DYNAMIC宏,那么这个程序就可以实现CRuntimeClass了???那位能详细解释解释??void PrintAllClasses()
{
    CRuntimeClass* pClass;
    // just walk through the simple list of registered classes
    for (pClass = CRuntimeClass::pFirstClass; pClass != NULL;
            pClass = pClass->m_pNextClass)
    {
        cout << pClass->m_lpszClassName << "\n";
        cout << pClass->m_nObjectSize << "\n";
        cout << pClass->m_wSchema << "\n";
    }
}