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++ - overloading operatori
Forum - C/C++ - overloading operatori

Avatar
puffin (Normal User)
Rookie


Messaggi: 30
Iscritto: 18/07/2009

Segnala al moderatore
Postato alle 13:17
Sabato, 29/08/2009
Ho realizzato questo piccolo programma che tratta di numeri complessi ma non capisco perche non mi funziona la versione di ++ postfissa

il cout del main mi dovrebbe stampare "3 6" ma invece stampa "4 6" in pratica mi prende la versione prefissa, spero che qualk 1 mi aiuti

comples.h
Codice sorgente - presumibilmente C++

  1. #ifndef _Complex
  2. #define _Complex
  3.  
  4. #include <ostream>
  5.  
  6. using namespace std;
  7.  
  8. class Complex{
  9. public:
  10. Complex();
  11. Complex(double,double);
  12. ~Complex();
  13. Complex operator+(const Complex& c)const ;
  14. Complex& operator++();
  15. Complex&  operator++(int x);
  16. friend ostream& operator << (ostream& o,const Complex& c);
  17. Complex& operator[](int i);
  18. void stampa();      
  19. private:
  20. double RE,IM;
  21.  
  22.      
  23.              
  24. };
  25.  
  26.  
  27. #endif



complex.cpp
Codice sorgente - presumibilmente C++

  1. #include "Complex.h"
  2. #include <ostream>
  3.  
  4. using namespace std;
  5. Complex::Complex(double re,double im){
  6.                        
  7. RE=re;
  8. IM=im;                        
  9. }
  10.  
  11.  
  12. Complex::~Complex(){}
  13.  
  14. Complex::Complex(){}
  15.  
  16. Complex Complex::operator+(const Complex& c)const {
  17.          
  18. return Complex(RE+c.RE, IM+c.IM);      
  19. }
  20.  
  21.  
  22. Complex& Complex::operator++(){
  23.      RE+=1; return *this;        
  24. }
  25.  
  26. Complex&  Complex::operator++(int x){
  27.          RE=RE+1;
  28.          return *this;          
  29. }
  30.  
  31.  
  32. ostream&  operator << (ostream& o,const Complex& c){
  33. o<<c.RE<<" "<<c.IM<<endl;
  34. return o;    
  35. }
  36.  
  37. Complex& Complex::operator[](int i){
  38. return   *(this + i);
  39. }



main
Codice sorgente - presumibilmente C++

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include "Complex.h"
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.     Complex a(1,2);
  10.     Complex b(2,4);
  11.     Complex c=a+b;
  12.  
  13.     cout<<c++;
  14.  
  15.  
  16.  
  17.  
  18.     system("PAUSE");
  19.     return EXIT_SUCCESS;
  20. }


Ultima modifica effettuata da puffin il 29/08/2009 alle 13:19


Solo Puffin ti dà Forza e Grinta a Volontà
------------------------------------------
Dijkstra:"I collaudi mostrano la presenza di errori, non la loro assenza.
Non si può provare che un progamma è corretto, ma solo che è scorretto"

PM Quote