PDA

Visualizza la versione completa : [C++] Overloading degli operatori: non visualizza la somma.


marru
30-05-2007, 11:38
salve a tutti...vi riporto un piccolo programmino sull'overloading degli operatori...volevo sapere come mai non mi visualizza la somma? e come posso risolvere? grazie a tutti

#include <iostream>

using namespace std;

class Somma{
friend istream &operator>>(istream &,Somma);
public:
Somma();
void Calcolo();
//void Stampa();
private:
int a,b,som;
};

Somma::Somma(){
a=b=som=0;
}

istream &operator>>(istream &cin, Somma s){
cout <<"inserisci il primo numero"<<endl;
cin >>s.a;
cout <<"inserisci il secondo numero"<<endl;
cin >>s.b;
}


void Somma::Calcolo(){
som=a+b;
cout <<"la somma e' " <<som<<endl;
}

int main(){
Somma so;
cin >>so;
so.Calcolo();
system ("pause");
}

Stefano1984Mn
30-05-2007, 11:45
Metti il linguaggio di programmazione

LeleFT
30-05-2007, 12:30
In effetti c' qualcosa che non va: non hai letto il regolamento.
Di conseguenza il titolo non conforme.

Per questa volta correggo io.


Ciao. :ciauz:

shodan
30-05-2007, 12:40
Originariamente inviato da marru
istream &operator>>(istream &cin, Somma s){
cout <<"inserisci il primo numero"<<endl;
cin >>s.a;
cout <<"inserisci il secondo numero"<<endl;
cin >>s.b;
}


hai dimenticato di mettere il reference a Somma
istream &operator>>(istream &cin, Somma& s){
...
}

altrimenti effettui l'input su un oggetto temporaneo che uscito dalla funzione viene distrutto.

marru
30-05-2007, 17:58
chiedo scusa LeleFT...

x shodan hai ragione....avevo dimenticato che senza il & lo passavo per copia....grazie mille

ciao a tutti

Loading