最近使用boost进行开发,感到很不错。今后还要陆续将自己的感想记下
在使用boost 的序列化时。
当序列话派生类时遇到问题。总是提示 ”unregist class“ ,但明明在类声明,定义文件中添加了相关的宏
...h
#include <boost/serialization/export.hpp>
///发布以后,后面的字符串就不能改了,否则就无法读取旧版本文件
BOOST_CLASS_EXPORT_KEY2(class1,"class1")
...cpp
BOOST_CLASS_EXPORT_IMPLEMENT(class1)
最后只能在文档序列化的地方添加
...
std::ifstream file(fileName);
assert(file.good());
boost::archive::xml_iarchive ar(file);
ar.template register_type<class1>();
...
才成功。
而以上两个宏的目的就是解决不用添加ar.template register_type<class1>();的目的。
真奇怪,看来两个宏有时不起作用