Serializing vector<int>

Hi, I am new to boost, but was able to get my own classes serialized. However, when I include <boost/serialization/vector.hpp> and try to serialize a vector<int> I get the compile messages below. I must be missing something. class myclass2 : public Serializable<myclass2> // inherit Serializable to become a serializable object { private: // Override the serialize method, listing all variables to (un)serialize friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & mc; ar & vint; } public: myclass2() {}; ~myclass2() {}; void Print() { mc[0].Print(); mc[1].Print(); } std::vector<int> vint; myclass mc[2]; }; if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -Wall -I../../src -I/ivlab/include -I/ivlab/include -I/usr/include/libxml2 -g -O2 -MT test_serializable.o -MD -MP -MF ".deps/test_serializable.Tpo" -c -o test_serializable.o test_serializable.cpp; \ then mv -f ".deps/test_serializable.Tpo" ".deps/test_serializable.Po"; else rm -f ".deps/test_serializable.Tpo"; exit 1; fi distcc[6473] ERROR: compile /home/alecg/.ccache/test_seria.tmp.hal.6469.ii on localhost failed /usr/include/boost/archive/detail/oserializer.hpp: In constructor ‘boost::archive::detail::oserializer<Archive, T>::oserializer() [with Archive = boost::archive::text_oarchive, T = myclass]’: /usr/include/boost/archive/detail/oserializer.hpp:135: instantiated from ‘static boost::archive::detail::oserializer<Archive, T>& boost::archive::detail::oserializer<Archive, T>::instantiate() [with Archive = boost::archive::text_oarchive, T = myclass]’ /usr/include/boost/archive/detail/oserializer.hpp:264: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::save_standard::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = myclass]’ /usr/include/boost/archive/detail/oserializer.hpp:322: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = myclass]’ /usr/include/boost/archive/detail/oserializer.hpp:536: instantiated from ‘void boost::archive::save(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = myclass]’ /usr/include/boost/archive/basic_text_oarchive.hpp:78: instantiated from ‘void boost::archive::basic_text_oarchive<Archive>::save_override(T&, int) [with T = const myclass, Archive = boost::archive::text_oarchive]’ /usr/include/boost/archive/detail/interface_oarchive.hpp:78: instantiated from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(T&) [with T = const myclass, Archive = boost::archive::text_oarchive]’ ../Serializable.h:71: instantiated from ‘void Serializable<T>::toStringStream(std::stringstream&) [with T = myclass]’ test_serializable.cpp:111: instantiated from here /usr/include/boost/archive/detail/oserializer.hpp:107: error: incomplete type ‘boost::serialization::extended_type_info_null<myclass>’ used in nested name specifier /usr/include/boost/archive/detail/oserializer.hpp: In constructor ‘boost::archive::detail::oserializer<Archive, T>::oserializer() [with Archive = boost::archive::text_oarchive, T = myclass2]’: /usr/include/boost/archive/detail/oserializer.hpp:135: instantiated from ‘static boost::archive::detail::oserializer<Archive, T>& boost::archive::detail::oserializer<Archive, T>::instantiate() [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/archive/detail/oserializer.hpp:264: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::save_standard::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/archive/detail/oserializer.hpp:322: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/archive/detail/oserializer.hpp:536: instantiated from ‘void boost::archive::save(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/archive/basic_text_oarchive.hpp:78: instantiated from ‘void boost::archive::basic_text_oarchive<Archive>::save_override(T&, int) [with T = const myclass2, Archive = boost::archive::text_oarchive]’ /usr/include/boost/archive/detail/interface_oarchive.hpp:78: instantiated from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(T&) [with T = const myclass2, Archive = boost::archive::text_oarchive]’ ../Serializable.h:71: instantiated from ‘void Serializable<T>::toStringStream(std::stringstream&) [with T = myclass2]’ test_serializable.cpp:136: instantiated from here /usr/include/boost/archive/detail/oserializer.hpp:107: error: incomplete type ‘boost::serialization::extended_type_info_null<myclass2>’ used in nested name specifier /usr/include/boost/archive/detail/iserializer.hpp: In constructor ‘boost::archive::detail::iserializer<Archive, T>::iserializer() [with Archive = boost::archive::text_iarchive, T = myclass]’: /usr/include/boost/archive/detail/iserializer.hpp:146: instantiated from ‘static boost::archive::detail::iserializer<Archive, T>& boost::archive::detail::iserializer<Archive, T>::instantiate() [with Archive = boost::archive::text_iarchive, T = myclass]’ /usr/include/boost/archive/detail/iserializer.hpp:375: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::load_standard::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = myclass]’ /usr/include/boost/archive/detail/iserializer.hpp:425: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = myclass]’ /usr/include/boost/archive/detail/iserializer.hpp:572: instantiated from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = myclass]’ /usr/include/boost/archive/basic_text_iarchive.hpp:64: instantiated from ‘void boost::archive::basic_text_iarchive<Archive>::load_override(T&, int) [with T = myclass, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/text_iarchive.hpp:64: instantiated from ‘void boost::archive::text_iarchive_impl<Archive>::load_override(T&, int) [with T = myclass, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/detail/interface_iarchive.hpp:76: instantiated from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = myclass, Archive = boost::archive::text_iarchive]’ ../Serializable.h:79: instantiated from ‘void Serializable<T>::fromStringStream(std::stringstream&) [with T = myclass]’ test_serializable.cpp:115: instantiated from here /usr/include/boost/archive/detail/iserializer.hpp:114: error: incomplete type ‘boost::serialization::extended_type_info_null<myclass>’ used in nested name specifier /usr/include/boost/archive/detail/iserializer.hpp: In constructor ‘boost::archive::detail::iserializer<Archive, T>::iserializer() [with Archive = boost::archive::text_iarchive, T = myclass2]’: /usr/include/boost/archive/detail/iserializer.hpp:146: instantiated from ‘static boost::archive::detail::iserializer<Archive, T>& boost::archive::detail::iserializer<Archive, T>::instantiate() [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/archive/detail/iserializer.hpp:375: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::load_standard::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/archive/detail/iserializer.hpp:425: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/archive/detail/iserializer.hpp:572: instantiated from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/archive/basic_text_iarchive.hpp:64: instantiated from ‘void boost::archive::basic_text_iarchive<Archive>::load_override(T&, int) [with T = myclass2, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/text_iarchive.hpp:64: instantiated from ‘void boost::archive::text_iarchive_impl<Archive>::load_override(T&, int) [with T = myclass2, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/detail/interface_iarchive.hpp:76: instantiated from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = myclass2, Archive = boost::archive::text_iarchive]’ ../Serializable.h:79: instantiated from ‘void Serializable<T>::fromStringStream(std::stringstream&) [with T = myclass2]’ test_serializable.cpp:140: instantiated from here /usr/include/boost/archive/detail/iserializer.hpp:114: error: incomplete type ‘boost::serialization::extended_type_info_null<myclass2>’ used in nested name specifier /usr/include/boost/archive/detail/iserializer.hpp: In member function ‘bool boost::archive::detail::iserializer<Archive, T>::is_polymorphic() const [with Archive = boost::archive::text_iarchive, T = myclass2]’: test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/iserializer.hpp:142: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/archive/detail/iserializer.hpp:143: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/archive/detail/iserializer.hpp: In member function ‘bool boost::archive::detail::iserializer<Archive, T>::is_polymorphic() const [with Archive = boost::archive::text_iarchive, T = myclass]’: test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/iserializer.hpp:142: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/archive/detail/iserializer.hpp:143: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/archive/detail/oserializer.hpp: In member function ‘bool boost::archive::detail::oserializer<Archive, T>::is_polymorphic() const [with Archive = boost::archive::text_oarchive, T = myclass2]’: test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/oserializer.hpp:131: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/archive/detail/oserializer.hpp:132: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass2>’ /usr/include/boost/archive/detail/oserializer.hpp: In member function ‘bool boost::archive::detail::oserializer<Archive, T>::is_polymorphic() const [with Archive = boost::archive::text_oarchive, T = myclass]’: test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/oserializer.hpp:131: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/archive/detail/oserializer.hpp:132: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<myclass>’ /usr/include/boost/archive/detail/oserializer.hpp: In constructor ‘boost::archive::detail::oserializer<Archive, T>::oserializer() [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’: /usr/include/boost/archive/detail/oserializer.hpp:135: instantiated from ‘static boost::archive::detail::oserializer<Archive, T>& boost::archive::detail::oserializer<Archive, T>::instantiate() [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/oserializer.hpp:264: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::save_standard::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/oserializer.hpp:273: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::save_conditional::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/oserializer.hpp:322: instantiated from ‘static void boost::archive::detail::save_non_pointer_type<Archive, T>::invoke(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/oserializer.hpp:536: instantiated from ‘void boost::archive::save(Archive&, const T&) [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/basic_text_oarchive.hpp:78: instantiated from ‘void boost::archive::basic_text_oarchive<Archive>::save_override(T&, int) [with T = const std::vector<int, std::allocator<int> >, Archive = boost::archive::text_oarchive]’ /usr/include/boost/archive/detail/interface_oarchive.hpp:78: instantiated from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(T&) [with T = const std::vector<int, std::allocator<int> >, Archive = boost::archive::text_oarchive]’ /usr/include/boost/archive/detail/interface_oarchive.hpp:86: instantiated from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator&(T&) [with T = std::vector<int, std::allocator<int> >, Archive = boost::archive::text_oarchive]’ test_serializable.cpp:73: instantiated from ‘void myclass2::serialize(Archive&, unsigned int) [with Archive = boost::archive::text_oarchive]’ /usr/include/boost/serialization/access.hpp:109: instantiated from ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/serialization/serialization.hpp:81: instantiated from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/serialization/serialization.hpp:140: instantiated from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = myclass2]’ /usr/include/boost/archive/detail/oserializer.hpp:148: instantiated from ‘void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::archive::text_oarchive, T = myclass2]’ test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/oserializer.hpp:107: error: incomplete type ‘boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ used in nested name specifier /usr/include/boost/archive/detail/iserializer.hpp: In constructor ‘boost::archive::detail::iserializer<Archive, T>::iserializer() [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’: /usr/include/boost/archive/detail/iserializer.hpp:146: instantiated from ‘static boost::archive::detail::iserializer<Archive, T>& boost::archive::detail::iserializer<Archive, T>::instantiate() [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/iserializer.hpp:375: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::load_standard::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/iserializer.hpp:382: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::load_conditional::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/iserializer.hpp:425: instantiated from ‘static void boost::archive::detail::load_non_pointer_type<Archive, T>::invoke(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/detail/iserializer.hpp:572: instantiated from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’ /usr/include/boost/archive/basic_text_iarchive.hpp:64: instantiated from ‘void boost::archive::basic_text_iarchive<Archive>::load_override(T&, int) [with T = std::vector<int, std::allocator<int> >, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/text_iarchive.hpp:64: instantiated from ‘void boost::archive::text_iarchive_impl<Archive>::load_override(T&, int) [with T = std::vector<int, std::allocator<int> >, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/detail/interface_iarchive.hpp:76: instantiated from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = std::vector<int, std::allocator<int> >, Archive = boost::archive::text_iarchive]’ /usr/include/boost/archive/detail/interface_iarchive.hpp:83: instantiated from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator&(T&) [with T = std::vector<int, std::allocator<int> >, Archive = boost::archive::text_iarchive]’ test_serializable.cpp:73: instantiated from ‘void myclass2::serialize(Archive&, unsigned int) [with Archive = boost::archive::text_iarchive]’ /usr/include/boost/serialization/access.hpp:109: instantiated from ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/serialization/serialization.hpp:81: instantiated from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/serialization/serialization.hpp:140: instantiated from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::text_iarchive, T = myclass2]’ /usr/include/boost/archive/detail/iserializer.hpp:160: instantiated from ‘void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::archive::text_iarchive, T = myclass2]’ test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/iserializer.hpp:114: error: incomplete type ‘boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ used in nested name specifier /usr/include/boost/archive/detail/iserializer.hpp: In member function ‘bool boost::archive::detail::iserializer<Archive, T>::is_polymorphic() const [with Archive = boost::archive::text_iarchive, T = std::vector<int, std::allocator<int> >]’: test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/iserializer.hpp:142: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/archive/detail/iserializer.hpp:143: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/archive/detail/oserializer.hpp: In member function ‘bool boost::archive::detail::oserializer<Archive, T>::is_polymorphic() const [with Archive = boost::archive::text_oarchive, T = std::vector<int, std::allocator<int> >]’: test_serializable.cpp:147: instantiated from here /usr/include/boost/archive/detail/oserializer.hpp:131: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/archive/detail/oserializer.hpp:132: error: invalid use of undefined type ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ /usr/include/boost/serialization/type_info_implementation.hpp:26: error: declaration of ‘struct boost::serialization::extended_type_info_null<std::vector<int, std::allocator<int> > >’ make[4]: *** [test_serializable.o] Error 1 make[4]: Leaving directory `/home/alecg/Software/ivlab3/objects/src/tests' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/home/alecg/Software/ivlab3/objects/src/tests' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/alecg/Software/ivlab3/objects/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/alecg/Software/ivlab3/objects' make: *** [all] Error 2 alec
participants (1)
-
Alec Gorjestani