2009-06-10 3 views
2

У меня есть код, который я хочу построить. В коде используется класс boost :: ptr_map для сериализации определенных объектов. У меня есть Visual Studio 2008 с boost1.38, и я получаю следующую ошибку от компилятора. Интересно, видел ли кто-нибудь подобное?C++ Boost ptr_map ошибка сериализации

C2039: «сериализации»: не является членом «буст :: ptr_map»

Похоже, некоторые ссылки не хватает, и мне интересно, что это такое, я не вижу никакого наддува/сериализации/ptr_map. У меня Googled много, и ничто не оказалось жизнеспособным. Я создал образец кода, который генерирует ту же ошибку ниже

#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 libs не полностью связаны таким образом. Попробуйте спросить в списке расширенной почты.

Однако запись функции для сериализации ptr_map должна быть довольно простой.

+0

У меня есть этот код, который успешно компилируется раньше, и я считаю, он был построен с использованием Visual Studio 2005 т.е. VC8 компилятор Я собираюсь отправить его в список рассылки наддува слишком – Faheem

+0

Это, см HTTP: // WWW. boost.org/doc/libs/1_39_0/libs/ptr_container/doc/reference.html#serialization –