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

C++ Discussion :

Sauvegarder une CLASSE dans un fichier ?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut Sauvegarder une CLASSE dans un fichier ?
    Bonjour, dans un programme je crée une classe et je fait pas mal d'opérations un peu longues avant de pourvoir m'en servir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CLASSE* objet=new CLASSE();
    //opérations longues
    //programme utile
    Comme les opérations sont toujours les mêmes, je me demandais s'il était possible de sauvegarder "objet" dans son état actuel dans un fichier pour le fois suivante le charger directement sans avoir a refaire toutes les opérations.

    Merci

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Bonjour,

    ça dépend de ce que contient ton objet.

    Contient-ils des pointeurs? Veux-tu utiliser le fichier généré sur une machine, par un programme sur une autre machine?

    Sinon, tu peux stocker toutes ses données selon ton propre format, puis les récupérer ensuite (il existe boost::serialization, qui peut aider).

    Si tu montres le prototype de ta classe on sera plus à même de t'aider

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    En fait c'est la classe CD3DMESH de directx un peu modifiée, donc y'a beaucoup de chose dedans, je pense que ça va être chaud...

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 627
    Points : 30 692
    Points
    30 692
    Par défaut
    Salut,

    Si tu enregistre ton pointeur, cela ne servira à rien...

    En effet, un pointeur n'étant que l'adresse actuelle à laquelle se trouve l'objet créé, si tu essaye de sauvegarder ton pointeur, tu sera gras en sachant que "l'objet en question se trouvait à telle adresse"...

    Ce qu'il faut, c'est veiller à sauvegarder le contenu de l'élément pointé par ton pointeur...

    Et, là encore, il s'agit de suivre une fois de plus (et de manière récursive) la logique: si un membre d'un objet est un pointeur, il faut veiller à sauvegarder l'objet qui se trouve à l'adresse pointée par celui-ci

    Sinon, le plus facile consiste le plus souvent à surcharger l'opérateur << pour les ostream, qui n'est que la classe de base de fstream (réservé aux fichiers) ou de cout (réservé à "la sortie standard")...voir, si tu veux limiter la surcharge à un fichier sortant, à surcharger l'opérateur << pour les ofstream.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 434
    Points : 82
    Points
    82
    Par défaut
    Oui je comprends bien pour les pointeurs.
    Mais même si j'arrivais à sauvegarder tout dans un fichier (ce qui me semble réalisable), je ne sais pas comment faire l'inverse, ou seulement de manière assez compliqué.

  6. #6
    Alp
    Alp est déconnecté
    Expert éminent sénior

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Renseigne toi sur boost.serialize, comme cela t'a été conseillé plus haut
    Tu peux mettre dans un fichier puis récupérer tes objets, sous certaines conditions que tu trouveras dans la doc

Discussions similaires

  1. Sauvegarde des champs d'une classe dans un fichier
    Par AlfredKr dans le forum Débuter
    Réponses: 1
    Dernier message: 15/10/2012, 14h39
  2. [PHP 5.3] Sauvegarder les propriétés statiques d’une classe dans un fichier
    Par geforce dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2010, 03h05
  3. Sauvegarder/Lire une classe dans un fichier
    Par Rodrigue dans le forum C++
    Réponses: 10
    Dernier message: 10/09/2005, 14h12
  4. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57
  5. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23

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