#include "obj.hpp"
#include <assert.h>
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
int main(void)
{
char *filename = "save.txt";
const obj o1(-2, false);
const obj o2;
const obj o3(21, true);
const obj *const p1 = &o1;
//save the obj data
{
//打开save.txt
std::ofstream ofs(filename);
boost::archive::text_oarchive ar(ofs);
//将o1 o2 o3 p1 的数据记录到
ar & o1 & o2 & o3 & p1;
}
obj restored_o1;
obj restored_o2;
obj restored_o3;
obj *restored_p1;
{
std::ifstream ifs(filename);
boost::archive::text_iarchive iar(ifs);
iar & restored_o1 & restored_o2 & restored_o3 &
restored_p1;
}
assert(restored_o1 == o1);
assert(restored_o2 == o2);
assert(restored_o3 == o3);
assert(restored_p1 != p1);
assert(restored_p1 == &restored_o1);
return 0;
}
#pragma once
namespace boost {
namespace serialization {
class access;
}
}
class obj {
private:
int d1_;
bool d2_;
public:
obj():d1_(-1),d2_(false){}
obj(int d1,int d2):d1_(d1),d2_(d2){}
bool operator==(const obj &o) const {
return d1_ == o.d1_ && d2_ == o.d2_;
}
private:
friend class boost::serialization::access;
template<typename Archieve>
void serialize(Archieve &ar,const unsigned version) {
ar & d1_ & d2_;
}
};
我的主要看的是这个例子http://www.codeproject.com/Articles/225988/A-practical-guide-to-Cplusplus-serialization
可能是我对C++不熟,在编译过程中却是老是通不过。
我想了半天,死活想不出,结果看到一篇blog,看见其添加了一个导入了一个库文件我也尝试了一下 g++ -o main main.o -lboost_serialization 结果居然通过了,
看了一下save.txt 文件居然 将obj中的变量数值记录了下来。这个就是序列化?