Serialization Using Boost.Serialization

I tried serialization, but every time I got stuck in errors, for example: -

error: 'class std::vector<int, std::allocator<int> >' has no member named 'serialize' 

here is my source code and serialization method knowing that i am using boost.serialize

 template <class E, class T> class heap{ vector<E> * hp; int index;//index is pointing to first empty place after the last element int maxsize; T comp;//comparable object designed to compare the objects private: friend class boost::serialization::access; // When the class Archive corresponds to an output archive, the // & operator is defined similar to <<. Likewise, when the class Archive // is a type of input archive the & operator is defined similar to >>. template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & hp; ar & index; ar & maxsize; ar & comp; } public: //default empty constructor heap(){ hp = new vector<E>(MAX); index = 0; maxsize = MAX; } . . . . . . } 

then I changed this line ar and hp; in

 for(int i = 0; i < hp->size(); i++) ar & hp->at(i); 

I had even worse mistakes, for example

 /../../../../boost/boost_1_48_0/boost/archive/text_oarchive.hpp:100: undefined reference to `boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::text_oarchive_impl(std::ostream&, unsigned int)' debug/main.o: In function `~text_oarchive_impl': Qt_4_8_0__4_8_0__Debug/../../../../boost/boost_1_48_0/boost/archive/text_oarchive.hpp:85: undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()' Qt_4_8_0__4_8_0__Debug/../../../../boost/boost_1_48_0/boost/archive/text_oarchive.hpp:85: undefined reference to `boost::archive::basic_text_oprimitive<std::ostream>::~basic_text_oprimitive()' 
+6
source share
1 answer
  • Enable <boost/serialization/vector.hpp> .
  • Do not highlight vector dynamically.
  • Remember to reference Serialization, this is not a header-only library.
+18
source

Source: https://habr.com/ru/post/909303/


All Articles