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’

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

4

1 回答 1

2

你需要serialize为你的State班级提供方法。

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

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

另外我认为您应该阅读有关指针序列化的信息

于 2012-09-05T14:34:53.207 回答