我有一些我想要构建的代码。该代码使用boost :: ptr_map类来序列化某些对象。我有使用boost1.38的Visual Studio 2008,我从编译器得到以下错误。我想知道是否有其他人看到过这样的事情。
C2039:'serialize':不是'boost :: ptr_map'的成员
看起来缺少一些引用,我想知道它是什么,我没有看到任何boost / serialization / ptr_map。我用Google搜索了很多东西,事实证明没有任何可行性。我创建了一个示例代码,在
下生成相同的错误#include <fstream>
#include <iostream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/config.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/ptr_container/ptr_map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/split_member.hpp>
using namespace std;
class User
{
boost::ptr_map<std::string, string> ptrmap;
public:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & ptrmap;
}
bool save(const std::string& filename)
{
ofstream ofs(filename.c_str());
if(ofs.good() == false)
{
return false;
}
try
{
boost::archive::text_oarchive oa(ofs);
oa << (*this);
}
catch(...)
{
throw;
}
return true;
}
};
int main()
{
User user;
user.save("C:\\test.db");
return EXIT_SUCCESS;
}
感谢任何帮助。
答案 0 :(得分:2)
看起来有boost/ptr_container/serialize_ptr_map.hpp
,这对#include很重要。
答案 1 :(得分:0)
也许没有对boost :: ptr_map的序列化支持? Boost库并没有完全连接。尝试询问提升邮件列表。
但是,编写一个函数来序列化ptr_map应该非常简单。