我正在尝试测试以下示例代码,它解释了如何在 boost 中序列化用户定义的原始类型类,它工作正常。但是如果我切换到我必须在我的项目中使用的 polymorphic_archive(使用 polymorphic_text_* 测试),它无法编译,我正在努力修复它(在 vc++2008 中测试)。
所有代码都可以在以下 3 个链接中找到:http://www.boost.org/doc/libs/1_46_1/libs/serialization/test/test_primitive.cpp http://www.boost.org/doc/libs /1_46_1/libs/serialization/test/test_tools.hpp和 libs/1_46_1/libs/serialization/test/text_archive.hpp
请将 text_archive.hpp 中的 headers 和 typedefs 更改为多态的,如下所示:
#include <boost/archive/polymorphic_text_oarchive.hpp>
typedef boost::archive::polymorphic_text_oarchive test_oarchive;
#include <boost/archive/polymorphic_text_iarchive.hpp>
typedef boost::archive::polymorphic_text_iarchive test_iarchive;
使用的预处理器标志:
BOOST_ALL_DYN_LINK;BOOST_FILESYSTEM_NO_DEPRECATED;BOOST_FILESYSTEM_VERSION=3
错误信息:
------ 构建开始:项目:TestSer4,配置:调试 Win32 ------正在
编译...
test_primitive.cpp
c:\program files\boost\boost_1_46_1\boost\archive\detail\oserializer.hpp( 88) : 错误 C2664: 'void boost::archive::polymorphic_oarchive_impl::save(const bool)' : 无法
将参数 1 从 'const A' 转换为 'const bool'
没有可以执行此操作的用户定义转换运算符转换,
或者不能调用操作符
c:\program files\boost\boost_1_46_1\boost\archive\detail\oserializer.hpp(232) :参见函数模板实例化的参考 'void boost::archive::save_access::save_primitive(存档 &,const T &)'
用
[编译
Archive=boost::archive::polymorphic_oarchive,
T=A
]
c:\program files\boost\boost_1_46_1\boost\archive\detail\oserializer.hpp(308) :参见对函数模板实例化的参考 'void boost::archive: :detail::save_non_pointer_type::save_primitive::invoke(Archive &,const T &)' 正在编译
[
Archive
=boost::archive::polymorphic_oarchive,
T=A
]
c:\program files\boost\boost_1_46_1\boost\ archive\detail\oserializer.hpp(525) : 参见函数模板实例化的参考 'void boost::archive::detail::save_non_pointer_type::invoke(Archive &,const T &)' 被
编译
[
Archive=boost::archive::polymorphic_oarchive,
T=A
]
c:\program files\boost\boost_1_46_1\boost\archive\polymorphic_oarchive.hpp(122) :参见对函数模板实例化 'void boost::archive:: 的引用save(Archive &,T &)' 正在
使用
[
Archive=boost::archive::polymorphic_oarchive,
T=A
]
c:\program files\boost\boost_1_46_1\boost\archive\detail\interface_oarchive.hpp(63) 编译:请参阅正在编译的函数模板实例化 'void boost::archive::polymorphic_oarchive_impl::save_override(const boost::serialization::nvp &,int)' 的
参考
[
T=A
]
c:\program files\boost\boost_1_46_1 \boost\archive\detail\polymorphic_oarchive_route.hpp(171) : 参见函数模板实例化'Archive &boost::archive::detail::interface_oarchive::operator < <(T &)'
使用
[
Archive=boost::archive::polymorphic_oarchive,
T=const boost::serialization::nvp
]
c:\apps\proj\serilization\testser4\testser4\test_primitive.cpp(73) 编译:参见函数模板实例化的参考 'boost::archive::polymorphic_oarchive &boost::archive::detail::polymorphic_oarchive_route::operator <<>(const boost::serialization::nvp &)'正在编译
使用
[
ArchiveImplementation=boost::archive::text_oarchive_impl,
T=A
]
构建日志保存在“file://C:\apps\proj\Serilization\BusSchedEx\BusSchedEx\Debug\BuildLog.htm”
TestSer4 - 1 错误( s), 0 个警告
========== 构建:0 个成功,1 个失败,0 个最新,0 个跳过 ==========
请帮忙。