VC++:我在文档类头文件前面添加一个CObject类,为什么报错了?

VC++:我在文档类头文件前面添加一个CObject类,为什么报错了?,第1张

C++有时叫人不可琢磨。把添加的类前后移动一下位置看是否能凑效。一次把我折腾了好长时间,不添加某个头文件说某函数没原型,添加了就报些很复杂的错,无奈之下随手把两个头文件前后对调了一下位置,一切OK!为了验证,再调回去,丑态又出……仅供参考!仅供参考!!

如果楼主非要这么玩的话,个人认为最猥琐且最简单的改法是在public中添加指向该private成员变量的双常量指针(如 const char* const pContent):这样改动最小,且保证不会改变原private成员变量的属性

1.除了要包含必须的头文件,关键是要选择正确的MFC运行库链接方式:Project->Setting->General->"Use MFC in a Shared DLL"。

2.这是一个自定义对象两种持久化方式比较的测试例子:

#include <afxwin.h> // MFC core and standard components

//#include <afxext.h>// MFC extensions

//#include <afxdisp.h> // MFC Automation classes

//#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls

//#include <afxcmn.h> // MFC support for Windows Common Controls

class CMyClass : public CObject

{

DECLARE_SERIAL(CMyClass)

public:

CMyClass(){}

CMyClass(LPCTSTR lpszClassName){m_cString=lpszClassName}

~CMyClass(){}

void Dump(CDumpContext&dc) const

void Serialize(CArchive&ar)

CString m_cString

}

IMPLEMENT_SERIAL(CMyClass,CObject,0)

void CMyClass::Dump(CDumpContext&dc) const

{

if(m_cString.GetLength() >0)

{

dc <<(LPTSTR)(LPCTSTR)m_cString

dc <<_T("\r\n")

}

}

void CMyClass::Serialize(CArchive&ar)

{

TCHAR* ptc=(LPTSTR)(LPCTSTR)m_cString

for(int i=0i<m_cString.GetLength()i++)

{

ar <<ptc[i]

}

ar <<'\r'

ar <<'\n'

}

int main()

{

CMyClass* pobj = new CMyClass(_T("请把我持久化,谢谢!"))

CFile cfile1(_T("dump1.txt"),CFile::modeReadWrite|CFile::modeCreate)

CDumpContext cdc(&cfile1)

pobj->Dump(cdc)

CFile cfile2(_T("dump2.txt"),CFile::modeReadWrite|CFile::modeCreate)

CArchive ar(&cfile2,0)

pobj->Serialize(ar)

Sleep(2000)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11713175.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存