begin process at 2012 05 30 07:10:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Question avec les constructeurs de copies


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Question avec les constructeurs de copies

jeudi 16 juin 2005 à 12:28:15 | Question avec les constructeurs de copies

OrsE

Salut tout le monde!
Voilà, j'ai un problème avec des classes, et je voudrais savoir si je peux le solutionner avec un constructeur de copie.
Voilà un exemple de ce que je veux faire, J'ai la classe A, et j'ai ensuite B,C,D qui dérivent toutes de A. Dans chacune des classe B,C et D je redéfini des propriétés et des méthodes. j'ai une fonction générique qui reçoit A*a en paramètre afin d'englober toutes les classes que je peux recevoir sans distinction de type.
Ce que je veux faire c'est une copie de la classe reçue... seulement si je fais une copie de ce que j'ai en paramètre, je fais une copie de A, et non pas de B, C ou D....
Comment je peux faire pour que quand je copie A, en fait je recopie la vrais classe que j'ai passé en paramètre??:
class A
{
...
};
class B:public A
{
...
};
class C:public A
{
...
};
class D:public A
{
...
};
...

B *b = new B();
fonction(b);
...

fonction(A *a)
{
    A copie;
    //faire une copie de b et non de a
}


Dans cette exemple, si je fais "copie(*a)", j'aurais une copie de "a" et non pas de "b" que j'ai passé en paramètre...
Voilà mon problème, merci...
jeudi 16 juin 2005 à 12:47:37 | Re : Question avec les constructeurs de copies

ymca2003

Réponse acceptée !
Déclare une fonction virtuelle dans la classe A du genre :
virtual A* NewCopy();

dans les classes dérivées surcharge cette méthode et fait un truc du genre :
A* B::NewCopy()
{
A* pnew = new B();
... init de pnew avec les attributs de this;
return pnew;
}

même genre de chose avec C et D.

dans ta fonction :
void fonction(A* a)
{
A* pnew = a->NewCopy();
}

=> tu devrait recevoir un nouvel objet du bon type dynamiquement (un delete est à faire dessus par contre)

jeudi 16 juin 2005 à 13:37:17 | Re : Question avec les constructeurs de copies

OrsE

Réponse acceptée !
Oui c la solution que j'ai mise en oeuvre en attendant d'avoir une éventuelle réponse sur les constructeurs de copie, mais apparament, ce que je demande n'est pas faisable.
La méthode que tu décrit là fonctionne très bien, donc je vais me passer des constructeurs de copie, c'était en fait pour savoir si une telle méthodes existait bien.
Merci




Cette discussion est classée dans : voil, copie, class, classe, paramètre


Répondre à ce message

Sujets en rapport avec ce message

operator [] ds une classe string pr retourner un caractère [ par ngryman ] Salut à ts,voilà j'ai un petit souci ds une classe String que j'ai fait. J'ai inclu un opérateur [] qui comme un char* retourne le char à la position classe et agregation... [ par Clonk ] bonjour,j'utilise plusieurs classes ayant des agregations (sous Borland).Disons en gros que si on a :class personne{private:int age;public:void affich probleme sur les class [ par JRB ] g trouve un cour sur les applications reseaux mais il manque des explications si quelqu'un pourrait me les apporrtais sa serais super je cherche a ajo CwinThread urgent [ par langedechu ] Bonjour,J ai un prob avce la classe CWinThread (je vais cracker si je n arrive pas le résoudre).Bon je m'explique : j ai creer une la classe : class c accéder à une variable globale type "class" ? [ par ilimo ] bonjour,comment accéder à une variable globale type "class" dans un autre fichier ?voici exemple plus détaillé : 1- //fichier CC.h-------------------- probleme copie class [ par loupin ] Bonjour a tous,je vous explique mon probleme. J'ai créer une classe avec deux fils point et tempo. Je voudrais copier le contenu des donnees membres d Voilà je suis coincé sur les fonctions se situant dans la classe carnet. [ par nulmaisveutcomprendre ] Bonjour voilà comme le dit plus haut mon sujet je suis coincé sur les fonctions de la classe carnet. J'ai déjà fait le reste du code sinon. J'aimerai Classe C++ et pointeurs [ par cybermax62 ] je veux utiliser des pointeurs sur des classes. j'écris mon code comme celui-ci :typedef class widget * pwidget;class widget{public:; char * name_s; Ordre de compilation des classes [ par 9sber ] Comment s'assurer qu'une classe est compilée avant une autre?Mon, pb est le suivant.Je suis sous VC++. J'ai une classe "R" qui hérite d'une classe "A" Pb de Multi héritage [ par bach58 ] Je veux définir une classe Z qui hérite d'une autre classe A par deux voies différentes :class A{ int a; ....}class X:A ..{..}class Y:A... {...}


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,321 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales