将指向自定义对象的指针向量存储到文件中
Posted
技术标签:
【中文标题】将指向自定义对象的指针向量存储到文件中【英文标题】:Store a vector of pointers to custom objects to file 【发布时间】:2012-09-05 14:30:44 【问题描述】:我正在使用 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 对象可序列化(不确定那个)。此外,我很困惑,因为存储指针(内存地址)不存储实际数据,这些数据将在程序终止时释放。有没有针对上述情况的解决方法?即使没有提升。
【问题讨论】:
是的,State
必须是可序列化的,实际对象将被序列化(“深度”序列化)。请阅读手册:boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html
【参考方案1】:
您的State
类需要serialize
方法。
http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html
数组 stop 的每个成员都将被序列化。但请记住,每个成员都是一个指针——那么这到底意味着什么?这种序列化的整个目标是允许在另一个地点和时间重建原始数据结构。 为了使用指针完成此操作,仅保存指针的值是不够的,必须保存它指向的对象。稍后加载成员时,必须创建一个新对象并将新指针加载到类成员中。
我也认为你应该阅读serialization of pointers
【讨论】:
以上是关于将指向自定义对象的指针向量存储到文件中的主要内容,如果未能解决你的问题,请参考以下文章