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!!!!
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!!!!