2009-06-10 91 views
2

我有一些我想要构建的代码。该代码使用boost :: ptr_map类来序列化某些对象。我有Visual Studio 2008与boost1.38,我得到编译器的错误。我想知道其他人是否看到过这样的事情。C++ Boost ptr_map序列化错误

C2039:“序列化”:是不是“的boost :: ptr_map”的成员

看起来像一些参考丢失,我不知道它是什么,我没有看到任何升压/系列化/ ptr_map。我搜索了很多,没有任何事情证明是可行的。我创建了一个示例代码,在下面生成相同的错误

#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; 
} 

任何帮助表示赞赏。

回答

2

看起来好像有一个boost/ptr_container/serialize_ptr_map.hpp,这对#include很重要。

0

也许有没有序列化支持boost :: ptr_map? Boost库并没有完全连接。尝试询问助推邮件列表。

但是,编写一个函数来序列化一个ptr_map应该很容易。

+0

我有这样的代码之前编译成功,我相信这是使用Visual Studio 2005中即VC8编译 我将它张贴升压邮件列表上也 – Faheem 2009-06-10 21:52:35