Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - questione di operatori
Forum - C/C++ - questione di operatori

Avatar
frankus89 (Normal User)
Rookie


Messaggi: 23
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 11:11
Sabato, 30/05/2009
salve ragazzi!
il compilatore mi dice che nel corpo di "operator*" "re" e "im" non sono dichiarati..ma essi non dovrebbero essere passati in maniera implicita con il puntatore this?

codice:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Complex{
  5.         float re;
  6.         float im;
  7.         public:
  8.         friend Complex operator+ (Complex obj);
  9.         friend Complex operator* (Complex obj);
  10.         Complex operator= (Complex obj);
  11.         Complex(){re=im=0;};
  12.         Complex(float a, float b) { re=a; im=b;};
  13. }
  14.        
  15. Complex::Complex operator+ (Complex obj){
  16.         Complex temp;
  17.         temp.re=re+obj.re;
  18.         temp.im=im+obj.im;
  19.         return temp;
  20. }
  21.  
  22. Complex::Complex operator* (Complex obj) {
  23.         Complex temp;
  24.         temp.re= re * obj.re;
  25.         if (im*obj.im>0) temp.im = -(im*obj.im);
  26.         temp.im = im*obj.im;
  27.         return temp;
  28. }
  29. Complex::Complex operator= (Complex obj){
  30.         re=obj.re;
  31.         im=obj.im;
  32.         return *this;
  33.  
  34.  
  35. int main()
  36. {
  37.         Complex ob(3,-6);
  38.         Complex ob1(3,6);
  39.         Complex k;
  40.         k = ob + ob1;
  41.         return 0;
  42. }



"Volevamo portare la democrazia in Medio Oriente. L'abbiamo uccisa in Occidente. Partecipa ai funerali,commossa ed affranta, l'informazione."
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 12:45
Sabato, 30/05/2009
Il codice corretto ...

Codice sorgente - presumibilmente C++

  1. class Complex{
  2.     float re;
  3.     float im;
  4.     public:
  5.     Complex operator+ (Complex obj);
  6.     Complex operator* (Complex obj);
  7.     Complex operator= (Complex obj);
  8.     Complex(){re=im=0;};
  9.     Complex(float a, float b) { re=a; im=b;};
  10. };
  11.      
  12. Complex Complex::operator+ (Complex obj){
  13.     Complex temp;
  14.     temp.re=re+obj.re;
  15.     temp.im=im+obj.im;
  16.     return temp;
  17. }
  18.  
  19. Complex Complex::operator* (Complex obj) {
  20.     Complex temp;
  21.     temp.re= re * obj.re;
  22.     if (im*obj.im>0) temp.im = -(im*obj.im);
  23.     temp.im = im*obj.im;
  24.     return temp;
  25. }
  26.  
  27. Complex Complex::operator= (Complex obj){
  28.     re=obj.re;
  29.     im=obj.im;
  30.     return *this;
  31. }
  32.  
  33. int main()
  34. {
  35.     Complex ob(3,-6);
  36.     Complex ob1(3,6);
  37.     Complex k;
  38.     k = ob + ob1;
  39.     return 0;
  40. }



- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
frankus89 (Normal User)
Rookie


Messaggi: 23
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 15:38
Sabato, 30/05/2009
grazie 1000!!
ho preso anche nota degli errori!!!


"Volevamo portare la democrazia in Medio Oriente. L'abbiamo uccisa in Occidente. Partecipa ai funerali,commossa ed affranta, l'informazione."
PM Quote