我正在使用boost示例代码在文件中存储对象指针的向量。 我的载体是:
class VOMC{
public:
vector<State*> vomc;
...
...
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & vomc;
}
}
这给了我以下错误(在更多的错误中):
/usr/local/include/boost/serialization/access.hpp:118:9: error: ‘class State’ has no member named ‘serialize’
错误可能告诉我,我还应该使我的 State 对象可序列化(不确定那个)。此外,我感到困惑,因为存储指针(地址到内存)不会存储实际数据,这些数据将在程序终止时释放。针对上述情况是否有解决方法?即使没有提升。
答案 0 :(得分:2)
serialize
课程需要State
方法。
http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html
数组停止的每个成员都将被序列化。但请记住每个成员都是一个指针 - 那么这究竟意味着什么呢?该序列化的整个目的是允许在另一个地方和时间重建原始数据结构。 为了使用指针实现此目的,仅保存指针的值是不够的,而是必须保存它指向的对象。稍后加载该成员时,必须创建一个新对象,并且必须将新指针加载到类成员中。
我认为你应该阅读serialization of pointers