hur.cn - 华软网

 热门搜索

深入浅出MFC 中代码问题

  作者:未知    来源:网络    更新时间:2011/9/30
…………

class CObject;

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;  //linkedlist of registered classes
};

struct AFX_CLASSINIT
{AFX_CLASSINIT(CRuntimeClass* pNewClass);};

#define RUNTIME_CLASS(class_name) \
(&class_name::class##class_name)

#define DECLARE_DYNAMIC(class_name) \
public: \
static CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntimeClass() const;

#define _IMPLEMENT_RUNTIMECLASS(class_name , base_class_name, wSchema, pfnNew) \
static char _lpsz##class_name[] = #class_name; \
CRuntimeClass class_name::class##class_name = { \
_lpsz##class_name, sizeof(class_name), wSchema, pfnNew, \
RUNTIME_CLASS(bass_class_name), NULL }; \
static AFX_CLASSINIT _init_##class_name(&class_name::class##class_name); \
CRuntimeClass* class_name::GetRuntimeClass() const \
{return &class_name::class##class_name;} \

#define IMPLEMENT_DYNAMIC(class_name, base_class_name) \
_IMPLEMENT_RUNTIMECLASS(class_name, base_class_name, 0XFFFF,NULL)

…………

我在 .cpp文件中实现
……
IMPLEMENT_DYNAMIC(CCmdTarget, CObject)
IMPLEMENT_DYNAMIC(CWinThread, CCmdTarget)
IMPLEMENT_DYNAMIC(CWinApp, CWinThread)
IMPLEMENT_DYNAMIC(CWnd, CCmdTarget)
IMPLEMENT_DYNAMIC(CFrameWnd, CWnd)
IMPLEMENT_DYNAMIC(CDocument, CCmdTarget)
IMPLEMENT_DYNAMIC(CView, CWnd)
……
                                  时  出现错误:

                 mfc.cpp(54) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(54) : error C2065: 'classbass_class_name' : undeclared identifier
d:\working\test1\mfc.cpp(54) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
d:\working\test1\mfc.cpp(55) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(55) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
d:\working\test1\mfc.cpp(56) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(56) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
d:\working\test1\mfc.cpp(57) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(57) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
d:\working\test1\mfc.cpp(58) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(58) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
d:\working\test1\mfc.cpp(59) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(59) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
d:\working\test1\mfc.cpp(60) : error C2653: 'bass_class_name' : is not a class or namespace name
d:\working\test1\mfc.cpp(60) : error C2440: 'initializing' : cannot convert from 'int *' to 'struct CRuntimeClass *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast


希望了解的大神解救!!




---华软 网友回答---
这个问题实在是简单得不能了
base_class_name你写成bass_class_name了
---华软网友回复---
悲剧 嗨!!

---华软网友回复---
问一下 大神 这两个宏到底有什么用啊???  
---华软网友回复---
引用 3 楼 yuanfj86912 的回复:
问一下 大神 这两个宏到底有什么用啊???

理解字面意思~      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。