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++/CLI Discussion :

Impl�menter interface ICloneable


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Par d�faut Impl�menter interface ICloneable
    Rebonsoir,
    Suite � mon histoire de r�f�rence, je souhaite copier une classe ou plutot la cloner.
    La m�thode MemberwiseClone() comme tout le monde le sait ne fait qu'un copie partielle.
    Donc je cherche � impl�menter l'interface ICloneable().

    Voici le code :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    ref class CObjetVcf:ICloneable{
     
    private: 
        String ^ nom, ^ prenom, ^mailWork, ^mailHome;
        array<String^>^adresseWork,^adresseHome;
        int age;
        String^ telFixe,^telMobile,^telTravail;
     
    public :
        CObjetVcf(); //constructeur
        String^ getTelFixe();
        String^ getTelMobile();
        String^ getTelTravail();
        int getAge();
        String^ getNom();
        String^ getPrenom();
        array<String^>^ getAdresseWork();
     
        void setNom(String ^);
        void setPrenom(String ^);
        void setAdresseWork(array<String^>^);
        void setAdresseHome(array<String^>^);
        void setMailWork(String ^);
        void setMailHome(String ^);
     
        void convertToLdiff();
        String^ Show();
        void Reset();
     
        virtual Object^ Clone(){
            Object^ tmp = gcnew Activator::CreateInstance(CObjetVcf());
            //tmp = this->MemberwiseClone();
     
            /*for(int i=0;i<3;i++){
                
            }*/
            return this->MemberwiseClone();
        };
    };
    Mon souci est ici : comment cr�er une instance de mon objet CObjetVcf � l'objet Object tmp ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     Object^ tmp = gcnew Activator::CreateInstance(CObjetVcf());
    Merci

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    gcnew CObjectVcf() ne suffit-il pas ?
    Ou avec un constructeur plus ou moins constructeur de copie, puisqu'il est question de cloner ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Par d�faut
    Ok merci �a marche avec gcnew CObjetVcf...
    Mais il se fait tard j'ai plus les id�es en place et je n'arrive pas � Cloner mon objet...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    ref class CObjetVcf:ICloneable{
     
    private: 
        String ^ nom, ^ prenom, ^mailWork, ^mailHome;
        array<String^>^adresseWork,^adresseHom
    en gros c'est mes "array" que je veux cloner en profondeur (�a ne passe pas dans la copie partielle.
    Comment puis-je faire avec ma m�thode :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    virtual Object^ Clone(){
            Object^ tmp = gcnew CObjetVcf();
            //tmp = this->MemberwiseClone();
     
            for(int i=0;i<3;i++){
                tmp->adresseWork[i] = this->adresseWork[]
            }
            return tmp->MemberwiseClone();
        };
    Merci... j'ai un peu de mal je ne faisais que du C++ et Java avant...

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    je ne sais pas pourquoi tu t'embetes avec des histoires de clonage
    regarde cet exemple
    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
    ref class MaClasse
    {
    private:
    	String ^nom, ^prenom;
    public:
    	MaClasse(String ^leNom, String ^lePrenom) {
    		nom = leNom;
    		prenom = lePrenom;
    	}
    	virtual String ^ ToString() override {
    		return gcnew String("Je m'appelle : " + prenom + " " + nom);
    	}
    };
     
    void main ()
    {
    	array<MaClasse ^> ^monTableau = gcnew array<MaClasse ^>(5);
    	for (int i = 0 ; i < 3 ; i++)
    		monTableau[i] = gcnew MaClasse("pyright(c)", "nico" + Convert::ToString(i));
    	for (int i = 0 ; i < 3 ; i++)
    		Console::WriteLine(monTableau[i]->ToString());
    }
    il d�montre bien que j'ajoute dans mon tableau un objet diff�rent � chaque fois, pas besoin de clone ou autre

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 47
    Par d�faut
    Dans MaClasse met un <array>String ou n'importe quoi avec les list �a ne copie pas mon objet.
    Si tu veux je te donne mon projet tu regardes.

  6. #6
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    Citation Envoy� par babozfr
    Dans MaClasse met un <array>String ou n'importe quoi avec les list �a ne copie pas mon objet.
    Si tu veux je te donne mon projet tu regardes.
    exemple minimal qui reproduit le pb

Discussions similaires

  1. Impl�mentation interface Iterator,Iterable
    Par small44 dans le forum D�buter avec Java
    R�ponses: 18
    Dernier message: 16/11/2013, 02h14
  2. V�rification impl�mentation interface a
    Par adissa357 dans le forum G�n�ral Java
    R�ponses: 6
    Dernier message: 15/10/2013, 16h49
  3. impl�menter l'interface ICloneable en vb6
    Par TaymouWan dans le forum VB 6 et ant�rieur
    R�ponses: 1
    Dernier message: 13/08/2009, 14h23
  4. [D�butant] Explication impl�mentation interface
    Par HaTnuX dans le forum Langage
    R�ponses: 3
    Dernier message: 16/01/2007, 16h37
  5. R�ponses: 2
    Dernier message: 13/10/2005, 11h08

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