【发布时间】:2014-04-22 04:38:37
【问题描述】:
我不确定如何序列化从另一个列表类型结构派生的结构。 以下是我要问的示例代码:
//Nodes.hpp
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/access.hpp>
#include <boost/serialization/optional.hpp>
#include <boost/serialization/list.hpp>
struct Node
{
std::string firstname;
std::string lastname;
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & firstname;
ar & lastname;
}
};
struct Nodes : public std::list<Node>
{
std::string address;
std::string country;
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & address;
ar & country;
}
};
BOOST_CLASS_EXPORT_KEY(Node);
BOOST_CLASS_EXPORT_KEY(Nodes);
BOOST_CLASS_EXPORT_IMPLEMENT(Nodes);
BOOST_CLASS_IMPLEMENTATION(Nodes,boost::serialization::object_serializable);
BOOST_CLASS_TRACKING(Nodes,boost::serialization::track_never);
请查看“public std::list”行,让我知道我的序列化是否正确。
【问题讨论】:
-
你能停止发布无聊的代码吗?并停止使用 MS-Word 复制/粘贴代码?发布包含非法关键字 (
Struct)、重复和冗余的导出 MACRO 的代码是没有用的定义Node::~Nodes的实现(它是什么?Node?还是Nodes?)。等等。这真的很简单。只需发布您的工作代码。如果不能,请发帖sscce.org -
我会改正的..
-
我已经更正了..它需要的地方..
-
你这么认为? :) 我已经编辑了其他问题。请注意,与“进行更正”相比,通常更容易避免“进行不更正”(即在您最喜欢的 IDE 中准备您的 SSCCE,编译器会告诉您您错过的事情。通常,在此过程中您会已经注意到您的问题的解决方案。请参阅 Solve your problem by almost asking a question on StackOverflow
-
我是否需要在 .cpp 文件中也包含 BOOST_CLASS_EXPORT_IMPLEMENT(Node) ?
标签: c++ serialization boost boost-serialization