2012-09-05 47 views
1

我正在使用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’ 

该错误使得大概是告诉我,我也应该让我国家对象序列化(不确定那个)。此外,我很困惑,因为存储指针(地址到内存)不存储实际数据,这些数据在程序终止时将被释放。有没有解决上述情况的方法?即使没有提升。

+1

是,'State'必须可序列化,以及实际的对象将被序列化(“深”序列化)。请阅读手册:http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html –

回答

2

您需要serialize方法为您的State类。

http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html

阵列的每个成员停止将被序列。但记住每个成员都是一个指针 - 那么这真的意味着什么?这个序列化的整个目标是允许在另一个地方和时间重建原始数据结构。 为了用指针来实现这一点,仅仅保存指针的值是不够的,而是指向的对象必须被保存。当成员稍后加载时,必须创建一个新对象并且必须将新指针加载到类成员中。

此外,我认为你应该阅读有关serialization of pointers

相关问题