IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

[serialize] std::list est-il sérialisable ?


Sujet :

Boost C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut [serialize] std::list est-il sérialisable ?
    Bonjour !

    Je m'occupe de sérialisation ces derniers temps, et alors qu'il me semblait avoir lu que std::list était sérialisable, je me suis surpris a avoir des problèmes de compilations en essayant.

    Voici le code de la classe concernée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    class				Container
      {
      public:
        Container(void)
        {
          _type = 0;
        }
     
        void			add(const std::string& str1, const std::string &str2, char code)
        {
          _str1.push_back(str1);
          _str2.push_back(str2);
          _code.push_back(code);
        }
     
        void			serialize(boost::archive::text_iarchive& ar, unsigned int version)
        {
          ar & _type & _contacts & _ips & _status;
        }
     
        void			serialize(boost::archive::text_oarchive& ar, unsigned int version)
        {
          ar & _str1 & _str2 & _code;
        }
     
      private:
        std::list<std::string>	_str1;
        std::list<std::string>	_str2;
        std::list<char>	_code;
      };
    Je sais qu'on sérialise plutôt avec une méthode template, mais j'ai eu besoin de faire autrement (des questions d'héritages).

    Je me retrouve avec ces erreurs à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /usr/include/boost/serialization/access.hpp:118: error: ‘class std::list<char, std::allocator<char> >’ has no member named ‘serialize’
    /usr/include/boost/serialization/access.hpp: In static member function ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’:
    /usr/include/boost/serialization/serialization.hpp:74:   instantiated from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
    /usr/include/boost/serialization/serialization.hpp:133:   instantiated from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::text_oarchive, T = std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
    /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 = std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]’
    main.cpp:20:   instantiated from here
    /usr/include/boost/serialization/access.hpp:118: error: ‘class std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >’ has no member named ‘serialize’
    Je suppose que c'est normal, mais qu'est-ce qui peut bien manquer ?

    Merci de votre aide !

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    As tu bien inclus boost/serialization/list.hpp (ou un nom du genre) ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. [C++][std::list] Reinterpret cast
    Par chronos dans le forum SL & STL
    Réponses: 7
    Dernier message: 18/08/2005, 17h04
  2. Imposer la largeur d'une zone de liste ? est ce possible
    Par ahage4x4 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 23/05/2005, 16h21
  3. [dev-C++]std::list<tree_node<T>*> iterator;
    Par jmv dans le forum Dev-C++
    Réponses: 7
    Dernier message: 06/05/2005, 13h14
  4. acceder au n iéme element d'une liste std::list
    Par sorari dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/03/2005, 15h21
  5. [std::list][find_if] problème avec mes foncteurs
    Par n!co dans le forum SL & STL
    Réponses: 12
    Dernier message: 04/02/2005, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo