将指向自定义对象的指针向量存储到文件中

时间:2012-09-05 14:30:45

标签: c++ boost boost-serialization

我正在使用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 对象可序列化(不确定那个)。此外,我感到困惑,因为存储指针(地址到内存)不会存储实际数据,这些数据将在程序终止时释放。针对上述情况是否有解决方法?即使没有提升。

1 个答案:

答案 0 :(得分:2)

serialize课程需要State方法。

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

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

我认为你应该阅读serialization of pointers