Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1104 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Probleme d'implementation operator= en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme d'implementation operator= en C++

n°480076
merry
Posté le 07-08-2003 à 16:08:49  profilanswer
 

Voila mon probleme :
 
J'ai deja eu à surcharger cet operator de
la facon suivante:
 
CObj & CObj::operator=(const CObj & o){
   a = o.a;
   b = o.b;
   ..
   etc...
 
   return *(this);
}
 
Ca c'est un classique, mais aujourd'hui
mon probleme c'est ke ma classe CObj derive d'une
classe CObjParent et ke la, je ne sais pas
comment ecrire ma surcharge pour ke le compilateur
me copie aussi les attributs de la classe mere (auxquels
j'ai pas acces, private oblige).
C'est encore plus tordu que le constructeur de copie.
 
Si quelqu'un voit une solution à ce probleme...
j'attends vos suggestions, merci
 

mood
Publicité
Posté le 07-08-2003 à 16:08:49  profilanswer
 

n°480135
LetoII
Le dormeur doit se réveiller
Posté le 07-08-2003 à 16:39:55  profilanswer
 

Je verrais bien un:

Code :
  1. CObj & CObj::operator=(const CObj & o)
  2. {
  3.    if(&o != this)
  4.    {
  5.       CObjParent::operator=(o);//J'ai un gros doute sur la syntaxe tout d'un coup
  6.       //reste
  7.    }
  8.    return *this;
  9. }


 
Un truc dans ce style. Bie nsur ça supose que la classe mère posséde son propre opérateur =


Message édité par LetoII le 07-08-2003 à 16:40:53
n°480143
merry
Posté le 07-08-2003 à 16:42:22  profilanswer
 

LetoII a écrit :

Je verrais bien un:

Code :
  1. CObj & CObj::operator=(const CObj & o)
  2. {
  3.    if(&o != this)
  4.    {
  5.       CObjParent::operator=(o);//J'ai un gros doute sur la syntaxe tout d'un coup
  6.       //reste
  7.    }
  8.    return *this;
  9. }


 
Un truc dans ce style. Bie nsur ça supose que la classe mère posséde son propre opérateur =


 
je suis d'accord, mais dans mon cas elle en a pas, tu
penses que je suis bloqué ? fo faire autrement ?

n°480147
LetoII
Le dormeur doit se réveiller
Posté le 07-08-2003 à 16:44:59  profilanswer
 

merry a écrit :


 
je suis d'accord, mais dans mon cas elle en a pas, tu
penses que je suis bloqué ? fo faire autrement ?
 


 
Y a un constructeur de recopie?

n°480151
merry
Posté le 07-08-2003 à 16:47:05  profilanswer
 

ouai yen a un.
c koi ton idee ?

n°480155
LetoII
Le dormeur doit se réveiller
Posté le 07-08-2003 à 16:48:14  profilanswer
 

merry a écrit :

ouai yen a un.
c koi ton idee ?
 


 
C très crade à mon gout mais tu doit pouvoir faire un new de placement sur le this en appelant le constructeur par recopie

n°480160
merry
Posté le 07-08-2003 à 16:50:12  profilanswer
 

ouai moi aussi jtrouve pas ca tres clean comme
prog mais j'ai deja essayé quand meme.
Le probleme c'est (j'ai oublié de preciser ca)
c'est ke le constructeur de copie est declaré
en private et ke j'y ai pas directement acces,
j'ai seulement droit au constructeur par defaut.
sniff, sniff.

n°480189
Taz
bisounours-codeur
Posté le 07-08-2003 à 17:17:52  profilanswer
 

une classe a toujours un opérateur= !
l'operator= ne s'hérite pas

n°480644
LetoII
Le dormeur doit se réveiller
Posté le 08-08-2003 à 09:01:23  profilanswer
 

Code :
  1. CObj & CObj::operator=(const CObj & o)
  2.   {
  3.        if(&o != this)
  4.        {
  5.      
  6.             CObjParent *THIS = dynamic_cast<CObjParent *>(this);
  7.             *THIS = o;
  8.             //reste
  9.        }
  10.        return *this;
  11.   }


 
J'ai pas mieu à proposer (cete chaleur me détruit le cerveau :sweat: )

n°480663
Taz
bisounours-codeur
Posté le 08-08-2003 à 09:29:03  profilanswer
 

pas la peine de faire un dynamic_cast. un static suffit. par contre, je comprends pas le problème à faire ça
 

Code :
  1. Base::operator=(other);

doit marcher dans tous les cas! ohé, ecoutez moi. toutes les classes C++ on un constructeur, destructeur, constructeur par recopie et operator=, que vous l'ecriviez ou pas!

mood
Publicité
Posté le 08-08-2003 à 09:29:03  profilanswer
 

n°480665
LetoII
Le dormeur doit se réveiller
Posté le 08-08-2003 à 09:31:04  profilanswer
 

Taz a écrit :

pas la peine de faire un dynamic_cast. un static suffit. par contre, je comprends pas le problème à faire ça
 

Code :
  1. Base::operator=(other);

doit marcher dans tous les cas! ohé, ecoutez moi. toutes les classes C++ on un constructeur, destructeur, constructeur par recopie et operator=, que vous l'ecriviez ou pas!


 
Tout à fait d'accord (après faut espérer que ça se passe bien avec l'operateur par défaut :D)
 
j'avais eu un petit doute sur le

Code :
  1. Base::operator=(other);

C pour ça que j'avais proposé une autre solution.

n°480741
merry
Posté le 08-08-2003 à 10:40:53  profilanswer
 

ok, bein merci a tous, je vais
tester tout ca.
a+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Probleme d'implementation operator= en C++

 

Sujets relatifs
[newbies en PHP] problème de base (mais qui m'énerve!)[ASP/SQL] problème insert into......
Problème de serveur SMTP pour envoi de mail en phpOpera - Probleme
[HTML / CSS] Problème avec le "positioning"[Perl] Probleme de formulaire en post
problème avec la balise FRAMESET (laisser un menu constament affiché)probleme graphique
Problème de paginationprobleme avec les themes de windows :-/ | progressbar & ownerdraw
Plus de sujets relatifs à : Probleme d'implementation operator= en C++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR