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 :

Sérialisation d'objets sans Boost


Sujet :

Boost C++

  1. #1
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut Sérialisation d'objets sans Boost
    Salut,

    Alors en fait je voudrais pouvoir sérialiser mes instances d'objets etc ... pour pouvoir reconstituer ces objets dès que je le souhaite.

    Ca consisterait donc à partir d'une instance d'une classe(le truc se doit d'être générique) de "sérialiser" cette instance dans un fichier, puis pouvoir à partir du fichier reconstruire l'objet tel qu'il était avant de le sérialiser.

    Sans utiliser boost, comment puis-je procéder?
    ( je n'ai pas à me justifier pour boost, parce que c'est pas pour moi le code, j'aide un ami sur un petit projet, et il s'entête à ne pas utiliser boost et il ne changera pas d'avis donc pas la peine d'insister )

    Merci!

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu sérialises de manière récursive, sur le même principe que Boost. Par exemple, tu peux enregistrer les données non binaires en XML, les binaires dans des fichiers binaires et l'indiquer dans l'arbre XML, ...

  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Oui mais ce qui m'embete le plus c'est comment faire :
    instance d'une classe->chaine de charactère->instance reconstruite à partir de la chaine...

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Et c'est quoi ce qui t'embête le moins ?

    Parce que là ce qui t'embête, c'est la sérialisation et la désérialisation. C'est à dire tout.

  5. #5
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Si ça te tient tant à coeur, tout le processus décrit ci dessus m'embête, oui.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut
    Ahhh ce syndrome du NIH ....

    Plus sérieusement, tu as de la doc sur les diverses approches (et autres concurrents) dans la doc de la lib de boost dans mes souvenirs.
    Sinon, des infos aussi dans la FAQ C++ lite.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    En effet pour FC++Lite, le bonheur s'y trouve.
    Je pense que ça ira
    Merci.

  8. #8
    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
    Première proposition : Prendre un ami moins borné

    Autrement, sans être plus précis, c'est difficile d'aider mieux...
    En général, il y a deux étapes pour sauver une classe : Sauver des informations permettant de savoir quelle classe a été sauvée, et sauver le contenu de la classe.

    Pour la pemière partie, il faut déjà trouver le vrai type de la classe (=le type le plus dérivé, si on a un pointeur sur une classe de base), et associer à ce type une chaîne de caractère unique. C'est assez facile si on peut se permettre d'être intrusif (on ajoute une fonction virtuelle), mais alors, adieu à la possibilité de sérialiser des classes tierces (comme par exemple un vector...)

    Pour ce qui est du contenu, c'est plus simple. J'aime juste le truc de boost qu'une seule fonction peut suffire pour définir à la fois sérialisation et désérialisation. Gain de code et fiabilité.

    Un autre point important est, si l'on a deux pointeurs sur une seule instance, de ne pas se retrouver après désérialisation avec deux instances identiques mais disjointes. Souvent, donc, quand on rencontre une instance pour la première fois, on la sérialise, pour la seconde fois, on indique dans le fichier une référence à la classe déjà sérialisée.

    Même s'il ne souhaite pas utiliser boost, je lui suggère de lire la doc et de la comprendre, afin d'avoir une bonne vue de ce que le système propose, et donc d'acquérir une connaissance du sujet.
    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. Sérialisation en binaire (sans Boost)
    Par fleorock24 dans le forum C++
    Réponses: 7
    Dernier message: 10/06/2009, 08h51
  2. Trier des objets sans Comparable
    Par Shabata dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 13/03/2006, 13h55
  3. Sérialisation d'objets en c++
    Par OxyLin dans le forum C++
    Réponses: 9
    Dernier message: 13/02/2006, 22h50
  4. [C#] Comment sérialiser un objet Font ?
    Par djmanu dans le forum C#
    Réponses: 5
    Dernier message: 20/01/2006, 09h51
  5. [Sérialisation] d'objets de types différents
    Par Amnesiak dans le forum Général Java
    Réponses: 3
    Dernier message: 08/12/2004, 22h28

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