Geometry *pGeo=NULL;
ar>>pGeo;//链接时好像是这里出的错你应该先new空间,再序列化吧
ar>>pGeo;//链接时好像是这里出的错你应该先new空间,再序列化吧
解决方案 »
- 我分析是多线程导致的问题,请问有什么方法避免这个问题?
- 多文档工程下获取摄像头的实时图像,但是滚动条的问题把我恶心到了
- OpenGL怎么对某个物体进行操作?....
- 请问Word中 打开对话框-查找范围 后面对应的控件是个什么控件
- SDI如何在Splitter的Tabview中动态建立HtmlView
- 'f:\mainfrm.cpp' cannot save file. the file may be in use by another application 这样的错误
- 讨论下五子棋的子力问题吧
- WIN7 任务栏(taskbar)双图标问题
- 怎么打开文件
- 为什么有这样的警告?
- [求助]MFC位图显示
- 关于CMschart在VS2010中的使用
所有代码链接:http://download.csdn.net/detail/wahahahawa1/7936685
另外将serialize中的代码该成如下时,读文件就会提示 :意外的文件格式!
void CPaintDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
}
else
{
// TODO: 在此添加加载代码 }
m_obArray.Serialize(ar);
}
ar>>m_nCount;
for (int i=0;i<m_nCount;i++)
{
Geometry *pGeo= new Geometry;
pGeo->Serialize(ar);
m_obArray.Add(pGeo);
}
for (int i=0;i<m_obArray.GetSize();i++)
{
Geometry *pGeo=(Geometry*)m_obArray[i];
ar<<pGeo;
}
改为:
for (int i=0;i<m_obArray.GetSize();i++)
{
Geometry *pGeo=(Geometry*)m_obArray[i];
pGeo->Serialize(ar);
}
就好了。
改了之后,链接没有问题了,只是后面打开文件时读取数据错误
在Geometry-> serilize保存时数据没错,而打开文件后,用Geometry->serialize读取的数据就乱了
还请版主帮忙调试一下……
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
ar<<m_obArray.GetSize();
for (int i=0;i<m_obArray.GetSize();i++)
{
Geometry *pGeo=(Geometry*)m_obArray[i];
pGeo->Serialize(ar);
}
}
else
{
// TODO: 在此添加加载代码
ar>>m_nCount;
for (int i=0;i<m_nCount;i++)
{
Geometry *pGeo=new Geometry();
pGeo->Serialize(ar);
m_obArray.Add(pGeo);
} }
测试无误,可以读写
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
}
else
{
// TODO: 在此添加加载代码
}
m_obArray.Serialize(ar);
}
版主再 重新画图 保存后 试试读取会不会有错误? 我的是: