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 :

[débutant] clone avec un vector


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut [débutant] clone avec un vector
    Bonjour

    je suis débutant en C++, je suis plustot JAVA et je me mets au C++:

    j'ai un soucie :
    est ce qu'il est possible de faire un clone d'un vecteur qui contient des pointeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<MaClass*> mesClass;
    et si oui comment est ce qu'il s'y prend.

    le but est d'avoir une copie de tous mes elements qui sont dans mon vecteur

    merci a bientot

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    Oui il est posible de faire un "clone".
    Pour faire une copie profonde de la valeur de tes objets pointés, il te faut faire un vecteur de pointeurs sur tes nouveux objets alloués (si tu veux évidemment dupliquer des objets). Pour une copie profonde, il te faudra définir un constructeur de copie de MaClass pour dupliquer en profondeur les pointeurs éventuels vers d'autres objets.
    Car il n'existe pas l'équivalent de l'interface Cloneable en C++.
    Et surtout, attention à la libération des objets alloués.
    Bonne chance pour le passage de Java à C++, l'inverse est quand-même beaucoup plus simple

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    merci

    je suis en train de faire une methode clone pour mon object, mais j'ai un probleme pour passer des String :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void Object::cloneAndInitialize(Object* &obj) 
    {	
        obj = new Object();
     
        obj->id = id;
     
        obj->type = type;
     
        obj->name = name;
    }
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int id;
    int type;
    std::string name;
    std::string data;
    et mon probleme c'est que ca passe a la compile, mais que ca plante a l'exécution au passage du name.

    une idée ?

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    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 292
    Par défaut
    As-tu réellement besoin de cloner ?

    Sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    std::vector<TaClass*> clone(std::vector<TaClass*> const& rhs) {
        std::vector<TaClass*> res; 
        res.reserve(rhs.size());
        for (std::vector<TaClass*>::const_iterator b=rhs.begin(), e=rhs.end()
             ; b != e
             ; ++b
         ) {
             res . push_back( b-> clone() );
         }
        return res;
    }
    Si ta classe ne propose pas de clone(), un simple "new TaClass(*b)" suffira -- faut-il encore que ta classe dispose d'un constructeur de copie.

    Sinon, il me semble que boost::ptr_vector propose déjà tout ce qu'il faut.
    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...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    merci a vous je m'en suis sorti

    a bientot

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

Discussions similaires

  1. [débutant] Problème de Cast avec des vector
    Par syl55 dans le forum Langage
    Réponses: 9
    Dernier message: 20/05/2009, 10h04
  2. [débutant] Problème avec Vector !
    Par syl55 dans le forum Langage
    Réponses: 12
    Dernier message: 14/05/2009, 15h57
  3. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42
  4. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28
  5. [Débutant] Lenteur avec TComPort
    Par PhDt76 dans le forum C++Builder
    Réponses: 22
    Dernier message: 27/09/2003, 21h43

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