请参阅下面的main()和两个非常简单的类.然后根据Boost序列化(以及显示的内容),我的问题是:
1)B类是否需要定义正常的重载流插入运算符'<<'和'>>'?目前在我的真实代码中它没有这些.
2)store()和load()方法中的类A是否需要明确地迭代map和multimap容器,明确地存储/加载它们的key:value对?例如:
void A::store(const char* filename){
std::ofstream ofs(filename);
boost::archive::text_oarchive oa(ofs);
std::map< std::string, B >::iterator it;
BMap.size();
oa << BMap.size();
for( it = BMap.begin(); it != BMap.end(); it++ ){
oa << it->first;
oa << it->second;
}
//similar for strMultimap
}
Run Code Online (Sandbox Code Playgroud)
我认为我不需要这样做,但我不确定.
3)假设B类只显示了两个数据成员,是否需要明确包含默认的构造函数?(与隐式默认构造函数相对)
4)B是否需要为比较运算符'>'覆盖?我认为它不是因为这是一个非常简单的类.
最后,对于我未能涵盖的任何内容的任何其他评论表示赞赏!
上述问题的示例代码:
//includes ommitted
int main() {
std::string file("test.dat");
A * pA = new A;
pA->store(file.c_str());
pA->fillMaps();
//release data
pA->load(file.c_str());
return 0;
}
//includes ommitted
class A
{
friend class boost::serialization::access;
public:
std::map< std::string, B > BMap; …Run Code Online (Sandbox Code Playgroud)