[Serialization]Impossible de serialiser un vector classes perso.
Bonjour.
En tentant de résoudre ce problème, j'en suis arrivé à créer le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #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;
} |
Sur Gcc 4.4.1, le code compile correctement, mais j'ai l'erreur suivante à l'execution:
Citation:
Envoyé par bash
/.../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.
Par contre, codepad ne donne pas le même résultat.
Cureieusement, A est bien serializable sur mon compilateur, je l'ai testée, mais pas sur codepad ou elle produit la même erreur.
Si vous avez une idée...
Merci ;)