我在界面画完图形后,我想把这个保存。其实我自己定义了一个CGraphicElement类,这个类的构造函数函数为:
CGraphicElement::CGraphicElement(sGraphicFormat geFmt,sGraphicHeader geHdr,sPointPosition * psPstn)
其实sGraphicFormat,sGraphicHeader和sPointPosition都是自己写的结构体。
还有一个CTypedPtrArray<CObArray,CGraphicElement*> sogOA用来保存画好的数据。
然后我在CGraphicElement类中写了一个Serialize函数:
void CGraphicElement::Serialize(CArchive& ar)
{
if(ar.IsStoring())
{
ar<<geFormat<<geHeader<<sPntPosition;
}
else
{
ar>>geFormat>>geHeader>>sPntPosition;
}
}
调试出线了两个错误,
error C2678: 二进制“<<”: 没有找到接受“CArchive”类型的左操作数的运算符(或没有可接受的转换)
error C2679: 二进制“>>”: 没有找到接受“sGraphicFormat”类型的右操作数的运算符(或没有可接受的转换)
这个问题要怎么解决啊?
CGraphicElement::CGraphicElement(sGraphicFormat geFmt,sGraphicHeader geHdr,sPointPosition * psPstn)
其实sGraphicFormat,sGraphicHeader和sPointPosition都是自己写的结构体。
还有一个CTypedPtrArray<CObArray,CGraphicElement*> sogOA用来保存画好的数据。
然后我在CGraphicElement类中写了一个Serialize函数:
void CGraphicElement::Serialize(CArchive& ar)
{
if(ar.IsStoring())
{
ar<<geFormat<<geHeader<<sPntPosition;
}
else
{
ar>>geFormat>>geHeader>>sPntPosition;
}
}
调试出线了两个错误,
error C2678: 二进制“<<”: 没有找到接受“CArchive”类型的左操作数的运算符(或没有可接受的转换)
error C2679: 二进制“>>”: 没有找到接受“sGraphicFormat”类型的右操作数的运算符(或没有可接受的转换)
这个问题要怎么解决啊?
void operator << (CArchive& ar)
{
……//保存代码
}
void operator >> (CArchive& ar)
{
……//读取代码
}
{
int iVal;
long lVal;
}testStruct;CArchive& AFXAPI operator<<(CArchive& ar, _testStruct &_tstruct)
{
return ar << _tstruct.iVal << _tstruct.lVal;
}CArchive& AFXAPI operator>>(CArchive& ar, _testStruct &_tstruct)
{
return ar >> _tstruct.iVal >> _tstruct.lVal;
}
// CSDI_1Doc 序列化
void CSDI_1Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
int iVal =1;
ar << iVal << testStruct;
}
else
{
// TODO: 在此添加加载代码
int iVal;
ar >> iVal >> testStruct;
}
}