我建立了一个多文档程序
文档类中有一个类对象实例
CTypedPtrArray<CObArray,CGraphicElement*> sogOA;
我写了文档的Serialize(ar)和CGraphicElement的Serialize()
文档类的为:
void ChuweiDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
sogOA.Serialize(ar);
}
else
{
// TODO: 在此添加加载代码
sogOA.Serialize(ar);
} }
CGraphicElement的为:
void CGraphicElement::Serialize(CArchive& ar)
{
if(ar.IsStoring())
{
ar<<geFormat<<geHeader<<sPntPosition;
}
else
{
ar>>geFormat>>geHeader>>sPntPosition;
}
}
结果当sogOA不为空是,保存时出现保存文档失败。
当sogOA为空时,没事!
我加了断点后调试发现,每次运行到文档类的Serialize时就已经报错了,并没有执行到CGraphicElement类的Serialize。
请问是为什么,怎么解决????
文档类中有一个类对象实例
CTypedPtrArray<CObArray,CGraphicElement*> sogOA;
我写了文档的Serialize(ar)和CGraphicElement的Serialize()
文档类的为:
void ChuweiDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
sogOA.Serialize(ar);
}
else
{
// TODO: 在此添加加载代码
sogOA.Serialize(ar);
} }
CGraphicElement的为:
void CGraphicElement::Serialize(CArchive& ar)
{
if(ar.IsStoring())
{
ar<<geFormat<<geHeader<<sPntPosition;
}
else
{
ar>>geFormat>>geHeader>>sPntPosition;
}
}
结果当sogOA不为空是,保存时出现保存文档失败。
当sogOA为空时,没事!
我加了断点后调试发现,每次运行到文档类的Serialize时就已经报错了,并没有执行到CGraphicElement类的Serialize。
请问是为什么,怎么解决????
把CGraphicElement类得操作符自己重载了http://topic.csdn.net/u/20120816/02/a0ba161c-f63a-4472-a2ae-9175933112f0.html
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
sogOA.Serialize(ar);
}
else
{
// TODO: 在此添加加载代码
sogOA.Serialize(ar);
}程序并没有运行到类的Serialize。
Using the DECLARE_SERIAL macro in the class declaration.
Defining a constructor that takes no arguments.
Using the IMPLEMENT_SERIAL macro in the implementation file for your class.这样的话就会出现保存失败。