Isomarcus
26-11-2005, 11:15
Ciao a tutti,
sono incappato in un errore che non riesco a correggere :cry:
vi posto direttamente il codice. è un esempio molto stupido di una classe, non guardate ad esempio in che modo viene fatta la somma, è ridotto tutto a livelli molto semplici per isolare il più possibile l'errore (la stessa classe in sè è una vera idiozia ma la uso per trovare facilmente gli errori)
allora, come prima cosa ho ridefinito l'operatore somma:
reali operator+(reali x, reali y) {
int num=(x.numero()+y.numero());
int dec=(x.decimale()+y.decimale());
reali aux(num,dec);
return aux;
}
poi ho ridefinito l'operatore di standard output <<
ostream& operator<<(ostream& os, reali& x) {
return os<<x.numero()<<"."<<x.decimale()<<endl;
}
l'operatore somma funziona in quanto reali y(3,14), z(3,14), x=y+z; dà il risultato desiderato
il problema è l'operatore <<. se scrivo cout<<y; funziona senza problemi.
se scrivo cout<<y+z; invece dà una sfilza di errori.... del tipo "no match for operator<< in std:cout<<operator+(y,z)
e nn capisco perchè :muro:
la somma è definita e funziona, il << è definito e funziona, perchè se combino le due cose non funziona? mi sono dimenticato di qualcosa?
grazie mille a chi mi sarà d'aiuto :(
sono incappato in un errore che non riesco a correggere :cry:
vi posto direttamente il codice. è un esempio molto stupido di una classe, non guardate ad esempio in che modo viene fatta la somma, è ridotto tutto a livelli molto semplici per isolare il più possibile l'errore (la stessa classe in sè è una vera idiozia ma la uso per trovare facilmente gli errori)
allora, come prima cosa ho ridefinito l'operatore somma:
reali operator+(reali x, reali y) {
int num=(x.numero()+y.numero());
int dec=(x.decimale()+y.decimale());
reali aux(num,dec);
return aux;
}
poi ho ridefinito l'operatore di standard output <<
ostream& operator<<(ostream& os, reali& x) {
return os<<x.numero()<<"."<<x.decimale()<<endl;
}
l'operatore somma funziona in quanto reali y(3,14), z(3,14), x=y+z; dà il risultato desiderato
il problema è l'operatore <<. se scrivo cout<<y; funziona senza problemi.
se scrivo cout<<y+z; invece dà una sfilza di errori.... del tipo "no match for operator<< in std:cout<<operator+(y,z)
e nn capisco perchè :muro:
la somma è definita e funziona, il << è definito e funziona, perchè se combino le due cose non funziona? mi sono dimenticato di qualcosa?
grazie mille a chi mi sarà d'aiuto :(