|
Boost Users : |
Subject: [Boost-users] [Serialization] Can't Serialize vectors of user-defined classes
From: Moch Ramis (mocramis_at_[hidden])
Date: 2010-07-14 03:55:25
hi all.
I recently tried to execute this very simple example:
#include <iostream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <fstream>
class A
{
public:
A(){}
private:
//Serialization tasks
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & , const unsigned int )
{
}
};
int main()
{
std::vector<A> eig;
std::cout <<eig.size()<<std::endl;
std::ofstream of("file.txt");
{
boost::archive::text_oarchive oa(of);
oa << eig;
}
of.close();
std::ifstream ifs("file.txt");
{
boost::archive::text_iarchive ia(ifs);
ia >> eig;
}
std::cout <<eig.size()<<std::endl;
return 0;
}
On my compiler (gcc 4.4.1), it compile fine but there is a runtime
error when the application start:
/.../boost/serialization/singleton.hpp:124: static T&
boost::serialization::singleton<T>::get_instance() [with T =
boost::archive::detail::iserializer<boost::archive::text_iarchive,
std::vector<EigMemberProps<int, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<EigMemberProps<int, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > > >]: Assertion `!
detail::singleton_wrapper<T>::m_is_destroyed' failed.
Curiously, the comportment of the gcc 4.1.2 of codepad is not the
same: http://codepad.org/sEK2fLua
Curiously, this works fine on my compiler when i olny serialize A but
not with the codepad compiler: http://codepad.org/j3wlsWDv
Do you have any clue about this problem ?
Thanks
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net