我建立了一个多文档程序
文档类中有一个类对象实例 
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。
请问是为什么,怎么解决????

解决方案 »

  1.   

    又见此贴,楼主不是自己解决了嘛。
    把CGraphicElement类得操作符自己重载了http://topic.csdn.net/u/20120816/02/a0ba161c-f63a-4472-a2ae-9175933112f0.html
      

  2.   

    不是,类的操作符我已经定义了,现在编译的时候显示没有错误,但是运行程序后,选择保存就会出现“文档保存失败”的提示。而且我调试一了一下,问题是处在文档类的Serialize函数这就已经报错了。void ChuweiDoc::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    // TODO: 在此添加存储代码
    sogOA.Serialize(ar);
    }
    else
    {
    // TODO: 在此添加加载代码
    sogOA.Serialize(ar);
    }程序并没有运行到类的Serialize。
      

  3.   

    我觉得楼主的CGraphicElement中没有加串行化所需要的宏。
    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.这样的话就会出现保存失败。