读书人

怎么理解struct CRuntimeClass CObjec

发布时间: 2013-01-22 10:23:54 作者: rapoo

如何理解struct CRuntimeClass CObject::classCObject ={ szCObject, sizeof(CObject), }
侯捷的书100页:

MFC.cpp文件中:

static char szCObject[] = "CObject";
//下面这行中为什么有struct,我发现删掉,程序照样运行,是什么语法?
struct CRuntimeClass CObject::classCObject =
{ szCObject, sizeof(CObject), 0xffff, 0, 0 };
static AFX_CLASSINIT _init_CObject(&CObject::classCObject);

CRuntimeClass* CRuntimeClass::pFirstClass = 0;

MFC.H文件中:

struct CRuntimeClass
{
// Attributes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
CRuntimeClass* m_pBaseClass;

// CRuntimeClass objects linked together in simple list
static CRuntimeClass* pFirstClass; // start of class list
CRuntimeClass* m_pNextClass; // linked list of registered classes
};

class CObject
{
public:
CObject::CObject()
{
}
CObject::~CObject()
{
}

virtual CRuntimeClass* GetRuntimeClass() const;

public:
static CRuntimeClass classCObject;//上面那行看起来像是给这行初始化
};


//下面这行中为什么有struct,我发现删掉,程序照样运行,是什么语法?
struct CRuntimeClass CObject::classCObject =
{ szCObject, sizeof(CObject), 0xffff, 0, 0 };

[解决办法]
CRuntimeClass是个struct,前面加个struct这是以前C语言的用法,在C++里可以去掉的
[解决办法]
CRuntimeClass 定义的时候就是struct,只不过赋值的时候再加一个struct来进一步强调而已

读书人网 >VC/MFC

热点推荐