Sto progettando una classe Fraction, che deve contenere un numero in formato frazionario.
Per ora gli ho fatto il calpo value che è un double, ma ho provato a fare l' overloading dell' operatore >> per prendere un valore in input:
codice:#include <iostream> using namespace std; class Fraction { public: Fraction(); Fraction(double value); Fraction(float value); Fraction(int value); void set(double value); void set(float value); void set(int value); double value; }; Fraction::Fraction() { value=0.0; } Fraction::Fraction(double value) { this->value=value; } Fraction::Fraction(float value) { this->value=(double)value; } Fraction::Fraction(int value) { this->value=(double)value; } void Fraction::set(double value) { this->value=value; } void Fraction::set(float value) { this->value=(double)value; } void Fraction::set(int value) { this->value=(double)value; } istream &operator>> (istream &input, Fraction *f) { input >> f->value; return input; } int main(int argc, char **argv) { Fraction *f; f=new Fraction(4.5); cin>>f; cout<<f->value<<endl; return 0; }Ma il problema è proprio quando vado a fare l' overloding: il campo l' ho messo pubblico perchè altrimenti mi dice che non può accedere a un campo privato.codice:istream &operator>> (istream &input, Fraction *f) { input >> f->value; return input; }
Mi chiedo se non c'è un modo di scavalcare questa cosa, come hanno fatto ad esempio con la classe string.Sapete come fare?

Rispondi quotando