请教boost序列化库中如何对基本类型(Primitive Types)比如int等的指针进行序列化?

Dream_soft 2008-11-10 11:19:38
请教各位弟兄:
在boost序列化库中如何对基本类型(Primitive Types)比如int等的指针进行序列化?比如double *p这么一个成员,指向动态分配的数组的如何序列化?对类类型没问题,但基本类型不行,请教。
...全文
259 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdslww220 2008-11-14
  • 打赏
  • 举报
回复
UP
cyj626 2008-11-14
  • 打赏
  • 举报
回复
up
Dream_soft 2008-11-14
  • 打赏
  • 举报
回复
好几天没来看,再顶一下。
帅得不敢出门 2008-11-10
  • 打赏
  • 举报
回复
对指针类型的序列化

序列化指针时我们当然希望它序列化指针指向的实际对象.
这一块书上没讲清楚. 测试时编译也没过. 先不管了.
大致意思是:

存储时. 会保存指针指向的实际对象.
导入时. 会创建一个新对象赋值给指针. 而且如果存储时. 同一个对象被多次以指针存放到文档. 读取时只创建一份. 而让多个指针指向这个新对象.

如果通过基类的指针序列化派生类的对象. 则要注册.
http://cunsh.ycool.com/post.2142197.html
星羽 2008-11-10
  • 打赏
  • 举报
回复
对于原始数据类型,当这些操作调用的时候,数据是简单的“被存储/被装载” “到/从” 档案(archive)。对于类(class)数据类型,类的serialize 函数被调用。对上面的操作,每个serialize 函数用来“存储/装载”其数据成员。这个处理采用递归的方式,直到所有包含在类中的数据“被存储/被装载”。

一篇文章

http://dozb.blogchina.com/dozb/1692310.html
星羽 2008-11-10
  • 打赏
  • 举报
回复
基本类型,应该可以直接

int a;

double* p = new double;
(*p) = 1.3;

sa<<a<<(*p);
帅得不敢出门 2008-11-10
  • 打赏
  • 举报
回复
帮顶
Dream_soft 2008-11-10
  • 打赏
  • 举报
回复
谢谢各位。

类类型的指针是可以直接序列化的,但基本类型不行。

当前找到三种说法,下面是其中两种:
By default, data types designated primitive by Implementation Level class serialization trait are
never tracked. If it is desired to track a shared primitive object through a pointer (e.g. a long
used as a reference count), It should be wrapped in a class/struct so that it is an identifiable
type. The alternative of changing the implementation level of a long would affect all longs
serialized in the whole program - probably not what one would intend.
第三种是手动分配内存,进行读入写出。

可这三种都不能让人满意,唉,模板的东西太难了,有谁知道么,请教。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧