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 :

manipulation des objets c++


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut manipulation des objets c++
    Bonjour,
    Mon problème est le suivant :
    J'ai une classe type A :
    Victor<X>,double y ......
    Je charge ma structure à partir d'un fichier et je fait un traitement la dessus , avant de lancer le traitement je copie l'ancient structure ( A *old=newstructure) pour la garder
    et je manipule newstructure si le traitement est pas bien je reviens à l'ancien structure(newstructure=old) sinon je relance le traitement sur la newstructure ainsi de suite.(boucle de 1000 fois par exemple)
    ça se compile mais au niveau de l'excution la boucle tourne 2 ou 3 fois et me génére ça :Exception en point flottant
    quelqu'un a une solution, je serai reconnaissant

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Bonjour,
    Citation Envoyé par zougagh Voir le message
    ...je copie l'ancient structure ( A *old=newstructure) pour la garder
    visiblement vous ne faites pas de copie, une copie se serait A old=*newstructure ou A *old=new A(newstructure) en supposant que l'operateur= ou le copie constructeur sont corrects
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    Merci de votre réponse,
    oui j'ai dans mon fichier.h A *old,A *newstructure;
    et dans mon fichier .cpp je fais old=newstructure
    Il me paraît que j'ai un probleme dans le copiage vu que c'est des pointeurs, du coup qu'on je fais l'affectation c'est comme je change rien mais je sais pas comment faire.

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    vous êtes sure d'avoir bien lu toute ma réponse précédente ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    oui toujours ça marche pas j'ai rectifié

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Citation Envoyé par zougagh Voir le message
    oui toujours ça marche pas j'ai rectifié
    La boule de cristale c'est facturé à l'entrée et payé d'avance.

    Un code minimal serait pas de refus, on est là pour aider mais on est pas devins non plus

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    c'est un code complexe et long mais j'ai encadré le probleme me faut juste une solution :
    quand je fais ça old=newstructure (ont même contenu)
    j'effectue des changement sur newstructure , ca se produit aussi pour old du coup moi je veux garder l'ancien contenu old
    je sais pas si c'est clear

  8. #8
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    bon, alors je recommence, si A est le type de la chose, faire soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A * old = new A(*newstructure);
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    A old(*newstructure);
    et bien vérifier que le copie constructeur fait ce qu'il faut par défaut, sinon le définir
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Es-tu sur que cela est lié à tes copies et non à une erreur dans ton calcul (comme une division par zéro par exemple) ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    Merci oui c'est lié au copiage , j'ai pas un constructeur de copie , du coup quand je fais l'affectation le contenu de 2 objet ça reste le même avant et après le traitement exemple :
    A *a; A*b (avec a contient 2)
    je fais b=a;
    je change le contenu de a devient par exemple 3
    quand je consulte b je trouve 3 sachant que moi je veux garder 2 .
    Donc il pointe sur la me chose , du coup faut que je fasse un constructeur de copie si oui comment sachant que mon type A est composé de 4 victor et 4 valeur de type double et un autre type.
    Merci encore une fois

  11. #11
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Citation Envoyé par zougagh Voir le message
    faut que je fasse un constructeur de copie si oui comment sachant que mon type A est composé de 4 victor et 4 valeur de type double et un autre type.
    si les structures/classes copiées ne contiennent pas de pointeur quel que soit le niveau auxquelles elles se trouvent, alors le copie constructeur produit automatiquement pas le compilateur conviendra parfaitement
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    Merci ,Ma classe est exactement comme suit :
    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 A {
     
    public:
     
    	char* DataFile;
     
    	int nbt;
     
    	int nbse;
     
    	int nbf;
    	int nbg;
     
    	vector<B *> ser;
     
    	vector<C *> flux;
     
    	vector<T *> ter;
    	vector<G *> groupes;
     
    	Cellule* cell;
     
    public:
     
    	Probleme(char* df);
     
    	virtual ~Probleme();
     
    	void saisirDonnees();
     
    };
    est-ce aussi nécessaire de surcharger l'opérateur=
    Merci

  13. #13
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    il y a donc bien des pointeurs

    la question est alors de savoir ce qui doit se passer lorsque vous dupliquez une instance, les objets pointés sont-ils partagés ou doivent-t-il eux même être dupliqués ?

    s'il faut dupliquer au moins l'un d'entre eux, alors il faut définir l'opérateur= et le copie constructeur afin de ne pas voir de mauvaise surprise.

    ne pas oublier un destructeur adéquat libérant tout ce qu'il faut, mais pas plus en cas de partage de données
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    je veux faire un déplicata de structure au debut et après chaque traitement relancé sur une structure je regarde si j'ai de bonne resultat je garde la structure et je relance le même traitemant sinon je reviens à la structure juste avant ainsi de suite.

  15. #15
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Citation Envoyé par zougagh Voir le message
    faire un déplicata
    ce n'est pas assez précis, relisez ma réponse précédente, et donc par exemple la duplication d'une instance implique-t-elle celle de son DataFile etc ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    non le premier constructeur c'est pour charger le fichier pour remplir la structure après on la modifie avec le traitement voila maintenant comment faire pour le constructure de copie et l'opérateur = en présence de cette structure avec les victor voila ce qui m'embête pour l'instant.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    Par exemple je vais faire ça :
    A::A(const A& a): nbt(p.nbt),nbs(p.nbs) .......{}
    Mais je fais comment pour les victeurs

  18. #18
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    tout dépend de la réponse à la question déjà posée : les objets pointés sont-ils partagés ou doivent-t-il eux même être dupliqués ?

    on ne peux pas répondre à cette question à votre place, et tant que vous n'y répondrez pas il sera impossible d'avancer
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 83
    Points : 34
    Points
    34
    Par défaut
    non sont pas partagés

  20. #20
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    alors il faut aussi les dupliquer, et donc par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    A::A(const A& a) : nbt(p.nbt),nbs(p.nbs) .......{
      ser.reserve(a.ser.size()); // optimize insertion
     
      for (vector<B *>::const_iterator itb = a.ser.begin();
           itb != a.ser.end();
           itb++)
        ser.push_back(new B(**itb));
     
      ...
    }
    plus d'information sur les vecteurs -> la faq / les tutoriels
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

Discussions similaires

  1. manipulation des objets
    Par Djawida dans le forum MFC
    Réponses: 1
    Dernier message: 16/06/2009, 14h17
  2. Manipulation des objets dans une session
    Par facilus68 dans le forum Hibernate
    Réponses: 5
    Dernier message: 28/12/2007, 14h02
  3. manipuler des objets créés par un autre prg
    Par aziz jim dans le forum C++
    Réponses: 1
    Dernier message: 07/11/2007, 12h08
  4. Comment Manipuler des objets dans une liste de type TList ?
    Par PadawanDuDelphi dans le forum Delphi
    Réponses: 1
    Dernier message: 02/11/2006, 15h40
  5. Réponses: 13
    Dernier message: 09/05/2006, 16h30

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