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 :

copier un vector de string


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut copier un vector de string
    Bonjour.

    C'est un peu bateau, mais je ne parviens pas a copier un vector de string correctement :

    j'ai un objet qui est censé en renvoyer un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    const std::vector < std::string >  Object::getVectorString()
    {
        return _vectorString ;
    }
    ou encore dans le constructeur de copie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    _vectorString = other._vectorString ;
    Mon code est-t-il mauvais ?

    Merci si vous pouvez m'aider .

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Bonsoir,

    Je ne comprends pas la relation entre les 2 codes qui sont -hors contexte- bon. Quel est l'erreur ? Pourrais-tu fournir un exemple minimaliste ?

    Il y a cependant 3 choses qui me choque:
    - getVectorString() est visiblement un getter, il devrait être const.
    - const dans le retour est de trop ou il manque une référence.
    - x = y n'est pas un appel de constructeur mais une affectation. Le constructeur c'est x(y) dans la liste d'initialisation.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    Merci pour ta réponse, jo.

    getVectorString() est visiblement un getter, il devrait être const.
    en effet.

    Le constructeur c'est x(y) dans la liste d'initialisation.
    ah ?
    En fait c'est dans mon constructeur de copie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    OBJECT::OBJECT ( OBJECT const& other )
    {
        _name = other._name ;
        _type = other._type ;
     
        _variable = other._variable ;
     
        _MONVECTOR = other._MONVECTOR ; // c'est ici que ca a pas l'aire de marcher correctement
     
    }
    Le but étant simplement de copier l'objet en construisant un nouveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    OBJECT nouvelObject ( monObjectQuiSertDeModel ) ;
    OBJECT *nouvelObjectPTR ( new OBJECT ( monObjectQuiSertDeModel ) ) ;
     
    etc...
    En tout cas, jusque là, tout fonctionne. Simplement, quand je tente de copier ( surement bêtement ) un std::vector, il n'a l'air d'en copier que le début ( sauf erreur )

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par jo_link_noir Voir le message
    Le constructeur c'est x(y) dans la liste d'initialisation.
    Mes constructeurs doivent-ils utiliser les listes d'initialisation ou l'affectation ?
    Mais même comme fait actuellement, ton std::vector devrait être parfaitement copié. Tu dois avoir un autre soucis quelque part, et un ECM aiderait bien.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    ton std::vector devrait être parfaitement copié
    Autant pour moi, en effet. Cela fonctionne.

    C'est bon pour le constructeur de copie. Maintenant j'aimerais pouvoir utiliser le vector contenue dans un class, depuis une autre class.
    Je dois mal m'y prendre...je suppose que le mieux est la référence, mais comment faire avec un vector ?

    car j'essaye ceci sans résultat : (objet qui envoi le vector )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    std::vector < Object >& ObjetQuiEnvoiLaReferenceDuVectorPourLeFaireUtiliserParUnAutreObjet::renvoiLeVector ()
    {
        return _vector_Object;
    }

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Il va falloir relire tes cours Simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector < Object >& ObjetQuiEnvoiLaReferenceDuVectorPourLeFaireUtiliserParUnAutreObjet::renvoiLeVector () {
        return _vector_Object;
    }

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    est-ce la longueur de mon impressionnant nom d'objet qui vous fait sourir
    ou pas..?

    ah oui je vois...dsl, j'ai mis un "&" en return par mégarde ( et amateurisme je l'avoue )

    En fait il compile, d'ailleurs, mais dès que le vector en vient à être updaté, il plante. ( le debugger confirme que c'est bien a l'utilisation du vector )..

    Votre réponse peut elle me laisser penser que c'est censé marcher ?

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

Discussions similaires

  1. vector<map<string, string> >::iterator ?
    Par scheme dans le forum C++
    Réponses: 11
    Dernier message: 10/12/2010, 09h32
  2. Réponses: 2
    Dernier message: 18/09/2010, 22h33
  3. Problème std::vector <std::string >
    Par TNT89 dans le forum SL & STL
    Réponses: 9
    Dernier message: 31/05/2008, 17h51
  4. conversion vector to string
    Par identifiant_bidon dans le forum C++
    Réponses: 18
    Dernier message: 15/11/2007, 10h40
  5. [jsp] Comment faire un cast de Vector to String?
    Par adil_vpb dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2007, 11h29

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