Renvoyer un objet

Renvoyer un objet - C++ - Programmation

Marsh Posté le 29-04-2004 à 18:02:53    

Bonjour !
 
J'ai surchargé un opérateur + pour additionner deux objets de ma création. Ca a pour but d'additioner les deux valeurs numériques de l'objet (qui contient également comme attribut des char *). Voici le corps de ma surcharge sachant que l'objet renvoyé est correct pour la valeur numérique, mais que les char * sont complètement modifiés !!! A koi cela est il du ? et pardon pour mon incultivisme !  
 
carte operator+(const carte aCarte, const carte aCarte2) {
const carte temp = carte(aCarte2.col,aCarte.val + aCarte2.val, aCarte2.figure);
return temp;
}

 
jusqu'au return tout est ok mais une fois qu'il est exécuté tout est bad ...! Merci d'avance

Reply

Marsh Posté le 29-04-2004 à 18:02:53   

Reply

Marsh Posté le 29-04-2004 à 18:07:58    

ben si t'initialises pas les char* (taz va te tapper :p) de ton nouvel objet temp, je crois bien que forcement il vont valoir du n'importe quoi... :)


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 18:11:42    

Le problème ne vient pas de là, car ils sont initialisés (j'ai quelque peu tronqué la fonction). Ce qui me laisse perplexe c'est que des attributs des deux objets aCarte et aCarte2 sont modifiés en des chaînes de carac de *ù%!;  

Reply

Marsh Posté le 29-04-2004 à 18:15:36    

hum, je sais pas trop...
fait voir toute la fonction...
et pis passe tes objets par reference plutot que par valeur


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 18:32:35    

Voila all my code un peu modif mais qui devrait marcher :
 
[i]carte carte :: operator+(const carte& aCarte) {
carte * temp =new carte(aCarte.col,this->val + aCarte.val,"" );
return * temp;
}
[\i]

Reply

Marsh Posté le 29-04-2004 à 18:34:32    

oui ca me semble plus correct, mais avec un carte* au lieu de carte pour le type de retour ca sera mieux :p


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 18:36:37    

a priori ca ne devrai rine changer ???

Reply

Marsh Posté le 29-04-2004 à 18:38:21    

ouuuuuuuups je n'ai rien dit :D
 
bon et donc ca marche maintenant ?


Message édité par myst78 le 29-04-2004 à 18:38:40

---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 18:42:25    

Yep !!!! Je suis un lutteur professionnel !! lol et merci beaucoup pour ton aide ... j'ai un tout ptit test qui décidera de mon avenir demain, et comme je suis plus rouillé en objet, c rassurant de voir qu'on peut encore compter sur quelques presonnes ! Merci Beaucoup encore une fois

Reply

Marsh Posté le 29-04-2004 à 18:46:56    

bof j'ai rien fait à part poser des questions :)
 
c'est quoi le test ? :p


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 18:46:56   

Reply

Marsh Posté le 29-04-2004 à 18:49:57    

En gros ca ne doit durer qu'une heure et ca devrait correspondre à une implémentation de classe. Si c du classique avec un peu de surcharge, ca devrait passer car je ne suis pas complètement rouillé. Mais si ca va chercher un peu trop loin, je suis un peu dans la mouize ... et comme je chôme depuis quelques temps déjà, je mise beaucoup dessus !

Reply

Marsh Posté le 29-04-2004 à 19:49:38    

dis donc luminou ... t'enchaine connerie sur connerie ?
 

Code :
  1. inline
  2. carte operator+(const carte &left, const carte &right) {
  3. return carte(aCarte2.col, aCarte.val + aCarte2.val, aCarte2.figure);
  4. }


 
fait gaffe, ce doit être une fonction globale

Reply

Marsh Posté le 29-04-2004 à 21:15:35    

C clair que je suis un deconneur !!! lol
Mais il faut bien quelqu'un pour faire tourner le forum à plein régime non ????

Reply

Marsh Posté le 29-04-2004 à 21:41:31    

Taz a écrit :

dis donc luminou ... t'enchaine connerie sur connerie ?
 

Code :
  1. inline
  2. carte operator+(const carte &left, const carte &right) {
  3. return carte(aCarte2.col, aCarte.val + aCarte2.val, aCarte2.figure);
  4. }


 
fait gaffe, ce doit être une fonction globale


ahahah faux !!!
aCarte2 et aCarte !? ca devrais pas être rigth et left ?
 
 [:ffluff]


---------------
«Le succès consiste à aller d'échecs en échecs sans jamais perdre son enthousiasme» - Churchill
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed