序列化的类的内容如下:
class CNode:public CObject
{
DECLARE_SERIAL( CNode )
public:
CNode( int x, int y );
int m_nY;
int m_nX;
void Serialize( CArchive &ar );
CNode();
virtual ~CNode();};
IMPLEMENT_SERIAL( CNode, CObject, 1 )
CNode::CNode()
{
m_nX = 0;
m_nY = 0;
}CNode::~CNode()
{}void CNode::Serialize(CArchive &ar)
{
// CObject::Serialize( ar );
if( ar.IsStoring )
{
ar<<m_nX<<m_nY;
}
else
{
ar>>m_nX>>m_nY;
}
CObject:: Serialize(ar);}CNode::CNode(int x, int y)
{
m_nX = x;
m_nY = y;
}
在下面函数中读不出数据
读到的是无餐构造函数的值 m_nX=0; m_nY=0;
void CMfcTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
CNode *p = new CNode( 10, 10 );
ar<<p;
}
else
{
CNode *p;
ar>>p;
}
}
大家帮忙看看问题在哪
class CNode:public CObject
{
DECLARE_SERIAL( CNode )
public:
CNode( int x, int y );
int m_nY;
int m_nX;
void Serialize( CArchive &ar );
CNode();
virtual ~CNode();};
IMPLEMENT_SERIAL( CNode, CObject, 1 )
CNode::CNode()
{
m_nX = 0;
m_nY = 0;
}CNode::~CNode()
{}void CNode::Serialize(CArchive &ar)
{
// CObject::Serialize( ar );
if( ar.IsStoring )
{
ar<<m_nX<<m_nY;
}
else
{
ar>>m_nX>>m_nY;
}
CObject:: Serialize(ar);}CNode::CNode(int x, int y)
{
m_nX = x;
m_nY = y;
}
在下面函数中读不出数据
读到的是无餐构造函数的值 m_nX=0; m_nY=0;
void CMfcTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
CNode *p = new CNode( 10, 10 );
ar<<p;
}
else
{
CNode *p;
ar>>p;
}
}
大家帮忙看看问题在哪
void CMfcTestDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ }
else
{ }
m_node.Serialize(ar);//m_node为CNode型成员变量
}
{
// CObject::Serialize( ar );
if( ar.IsStoring )
{
ar < <m_nX < <m_nY;
}
else
{
ar>>m_nX>>m_nY;
}
CObject:: Serialize(ar); }
CObject:: Serialize(ar); 这句话需要吗?你读写数据都使用该基于文件的吧?
BOOL CMfcTestDoc::LoadFile()
{
CFile f;
if(f.Open(m_strFileName,CFile::modeRead))
{
if(f.GetLength() == 0)
return FALSE;
CArchive ar(&f,CArchive::load);
m_node.Serialize(ar);
}
else
return FALSE;
return TRUE;
}BOOL CMfcTestDoc::SaveFile()
{
CFile f;
if(f.Open(m_strFileName,CFile::modeWrite|CFile::modeCreate))
{
CArchive ar(&f,CArchive::store);
m_node.Serialize(ar);
}
else
return FALSE;
return TRUE;
}
应该是CNode的成员函数Serialize(CArchive& ar )读取时问题
但我实在看不出来哪里写错了
设置了几个端点,发现尽然运行到下面这里
ar>>p;——〉CNode::Serialize(CArchive &ar) ——〉 ar<<m_nX<<m_nY;
在CNode::Serialize(CArchive &ar)中
ar.IsStoring条件尽然为TRUE而在调用此函数的CMfcTestDoc::Serialize(CArchive& ar)中
ar.IsStoring条件为FALSE我真的郁闷了
犯了低级错误
void CNode::Serialize(CArchive &ar)中
ar.IsStoring 后面没写括号