2012-02-24 27 views
6

Tôi đã cố gắng serialization nhưng mỗi khi tôi đã bị mắc kẹt với các lỗi như: -serialization sử dụng Boost.Serialization

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

đây là mã nguồn của tôi và serialize phương pháp, biết tôi sử dụng 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; 


    } 
. 
. 
. 
. 
. 
. 
} 

sau đó tôi đã thay đổi dòng này ar & hp; vào

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

Tôi đã nhận lỗi thậm chí tệ hơn như

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

Trả lời

18
  1. Bao gồm <boost/serialization/vector.hpp>.
  2. Không cấp phát vector động.
  3. Đừng quên liên kết để nối tiếp, nó không phải là thư viện chỉ dành cho tiêu đề.
+1

Số 2 phải có chữ cái lớn. –