扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:姜景捷 来源:yesky 2007年10月22日
关键字:
CMapVertex(CMapVertex& other); CMapVertex& operator =(CMapVertex& other); |
这样修改以后CMapVertex类就可以在模板类中使用(比如定义CList<CMapVertex, CMapVertex>),建立更加复杂的对象,而且可以使用模板类的序列化函数直接进行读写操作。
注:实践发现CMapVertex类中不可以使用CStirng类作为成员变量,如果使用在数据读写的时候会出现错误;而且在重载拷贝构造函数、operatror = 函数时需要把关键成员全部包括,否则添加到链表或数组里的对象会有部分成员未被赋值。
使用方法:
经过序列化以后我们就可以在程序中建立该类的对象,在文档类的序列化函数可以获得CArchive对象实现自定义数据的读写操作。另外需要说明的是,CArchive类对析取和插入运算符的重载只支持下表中的数据 类型
WORD | DWORD | BYTE |
int | LONG | Float |
double | CString | CObject* |
POINT and CPoint | SIZE and CSize | CTime and CtimeSpan |
RECT and CRect | COleCurrency | ColeVariant |
COleDateTime | COleDateTimeSpan |
如果我们需要对其他类型(如bool型)作就需要进行显式的强制类型转化其他类型(如BYTE)进行写操作并通过临时变量读操作。自定义类型既可以使用指针(作为参数使用析取和插入运算符操作)进行读写,也可以使用Serialize函数进行读写,二者如何区分使用呢?MSDN给我们的答案是,当操作对象使静态对象或则已经分配好内存指针的时候,使用Serialize函数;当操作对象是指针且没有动态分派内存时使用重载操作符。
注:Visual C++中可以使用bool和BOOL两种布尔变量但是它们的机制可能不完全相同,因为声明为BOOL型的时候可以用操作符进行读写操作,笔者认为BOOL与BYTE相同。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者