存储指针的向量自定义对象到文件(Store a vector of pointers to cust

2019-10-17 05:24发布

我使用升压示例代码存储在一个文件对象的指针的载体。 我的矢量为:

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’

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

Answer 1:

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

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

阵列停止的各部件进行序列化。 但是,请记住每个成员是一个指针 - 有啥可这究竟意味着什么? 此序列的整个目的是在另一个地点和时间,以允许原始数据结构的重建。 为了用指针来实现这一点,并不足以挽救指针的值,而它指向的对象以必须保存。 当构件随后加载,一个新的对象必须创建和一个新的指针必须被加载到类成员

此外,我认为你应该阅读有关指针的序列化



文章来源: Store a vector of pointers to custom objects to file