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

SL & STL C++ Discussion :

conteneur passé par copie: reception bizarre.


Sujet :

SL & STL C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut conteneur passé par copie: reception bizarre.
    Bonjour à tous!

    Voici le constructeur d'une de mes classes:
    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
    CEchiquier::CEchiquier(CArbitre* pa,CPosition pos)
    {
        _initseg();
    
        /*  Instanciation des pieces    */
        std::map<CCoord,int,CCompare> tmp;
        std::map<CCoord,int,CCompare>::iterator it;
    
        tmp=pos._pieces();
    
        for(it=tmp.begin();it!=tmp.end();it++){
        for(it=pos._pieces().begin();it!=pos._pieces().end();it++){
            _inscrptpos(it->first,it->second);
        }
    }
    Le code en vert fonctionne tres bien alors que celui en rouge ne lit que 2 éléménts sur 32.
    Quel peut en être la raison?

  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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Quel est le type de retour de la fonction pièces ? Si elle retourne par valeur, alors chaque appel de cette fonction va retourner un nouveau tableau, qui n'aura aucun rapport avec le précédent.
    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.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 187
    Points : 97
    Points
    97
    Par défaut
    Merci! C'est exactement ça!!
    Ma fonction est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<CCoord,int,CCompare> CPosition::_pieces()const;
    Je vais la changer pour un retour par référence, ça allégera le fonctionnement de mon programme.
    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probléme lorsqu'une fenétre passe par dessus l'autre...
    Par hostile dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 03/01/2006, 19h20
  2. [Tableaux] récuperer une variable tableau passé par URL
    Par molesqualeux dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2005, 01h12
  3. Constructeur par copie et std::list
    Par Captain_JS dans le forum SL & STL
    Réponses: 5
    Dernier message: 13/12/2005, 19h15
  4. [deb.]Constructeur par copie
    Par Marc_3 dans le forum Débuter
    Réponses: 4
    Dernier message: 19/11/2005, 13h33
  5. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 20h29

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