提升序列化 - 序列化 std::tr1::shared_ptr?
Boost::Serialization 内置了对 boost::shared_ptr
的支持。
有没有办法也对 std::tr1::shared_ptr
使用此支持?
是否可以从 std::tr1::shared_ptr<>
转换为 boost::shared_ptr<>
?
Boost::Serialization has builtin support for boost::shared_ptr<>
.
Is there a way to use this support for std::tr1::shared_ptr<>
too?
Is it possible to cast from std::tr1::shared_ptr<>
to boost::shared_ptr<>
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于实现不同,无法进行铸造。另外,使用从另一个shared_ptr类型上的get()返回的值创建一个shared_ptr类型的实例将无法正常工作,因为引用计数将在代码中的不同点变为0,这会导致在最后一个之前删除对象使用它。
我不是 boost::serialization 的专家,但作为 std::tr1::shared_ptr<> 的接口和 boost::shared_ptr>>几乎相同,您很可能只需克隆 boost::shared_ptr<> 的序列化/反序列化代码即可只需要替换shared_ptr的命名空间即可。
A casting will not be possible as implementations differ. Also creating an instance of the one shared_ptr type with the value returned from get() on the other shared_ptr type will not work correctly as the reference countings will go to 0 at different points in your code which leads to deletion of the object before the last use of it.
I am not an expert of boost::serialization but as the interfaces of std::tr1::shared_ptr<> and boost::shared_ptr<> are nearly identical it is very likely that you can just clone the serialization/deserialization code of boost::shared_ptr<> and only have to replace the namespace of the shared_ptr.