2012-02-24 26 views
6

he estado tratando de serialización pero cada vez que se quedó atascado con errores como: -serialización utilizando Boost.Serialization

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

aquí está mi código fuente y serializar método, sabiendo que soy utilizar 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; 


    } 
. 
. 
. 
. 
. 
. 
} 

luego cambié esta línea ar & hp; en

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

llegué aún peores errores como

/../../../../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()' 

Respuesta

18
  1. Incluir <boost/serialization/vector.hpp>.
  2. No asigne vector dinámicamente.
  3. No olvides vincular a Serialización, no es una biblioteca de solo encabezado.
+1

El número 2 debe tener letras grandes y gruesas. –

Cuestiones relacionadas