PDA

View Full Version : problema con l'overload di operatori


stufava
23-01-2009, 14:23
Buongiorno a tutti, volevo sapere se c'è qualcuno che può aiutarmi con questo problema:

sto scrivendo un programma in c++ in cui ho definito alcune classi e ho fatto l'overload degli operatori << e >> per gli oggetti relativi a queste classi, ma quando compilo mi da errore: qui vi posto un pezzo del codice:

class data
{public:
int G;
int M;
int A;
data();
void stampa(ostream& dest)
{dest<<G<<"/"<<M<<"/"<<A;
return;
}
void leggi(istream& sorg)
{int giorno,mese,anno;
char sep='/';
sorg>>giorno>>sep>>mese>>sep>>anno;
G=giorno;
M=mese;
A=anno;
return;
}
}
class persona : public data
{public:
string NOME;
string COGNOME;
data NASCITA;
string RECAPITO;
string MAIL;
persona();
void stampa(ostream& dest)
{dest<<COGNOME<<endl<<NOME<<endl;
dest<<NASCITA;
dest<<endl<<RECAPITO<<endl<<MAIL<<endl<<endl;
return;
}
void leggi(istream& sorg)
{string name,surname,address,email;
data birth;
sorg>>name>>surname;
sorg>>birth;
sorg>>address>>email;
NOME=name;
COGNOME=surname;
NASCITA=birth;
RECAPITO=address;
MAIL=email;
return;
}
}

//altre classi e robe varie...
//poi fuori dalla definizione di qualsiasi classe e prima di aprire il main ho scritto:

ostream& operator<<(ostream& dest,const data& x)
{x.stampa(dest);
return dest;
}
istream& operator>>(istream& sorg,data& x)
{x.leggi(sorg);
return sorg;
}
ostream& operator<<(ostream& dest,const persona& x)
{x.stampa(dest);
return dest;
}
istream& operator>>(istream& sorg,persona& x)
{x.leggi(sorg);
return sorg;
}


a compile time mi da quest'errore:

no match for 'operator<<' in 'dest <<((persona)*this)->persona::NASCITA'


perchè??? Come devo fare per risolvere questo problema??
grazie in anticipo a chi risponde!!!!

cionci
23-01-2009, 14:52
http://www.hwupgrade.it/forum/showthread.php?t=1649196