modification d'operateur de flux
bonjour à tous,
je suis en train d'apprendre la poo en faisant un programme qui manipule des fractions, je voudrais modifier l’opérateur << pour qu'il affiche les fractions sous la forme a/b sauf que je souhaite rendre privés les attributs numérateur et dénominateur de ma fraction du coup je ne sais pas comment y accéder (enfin j'ai bien quelques idées mais je cherche la "bonne" façon de faire.
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| class Fraction
{
public:
Fraction(int numerateur, int denominateur) noexcept;
void simplification() noexcept;
double valeur_reelle() const noexcept;
private:
int m_numerateur;
int m_denominateur;
};
//constructeur:
Fraction::Fraction(int numerateur, int denominateur) noexcept
: m_numerateur(numerateur), m_denominateur(denominateur)
{
assert(m_denominateur != 0, "le denominateur ne peut pas valoir 0");
}
void Fraction::simplification() noexcept
{
m_numerateur /= std::gcd(m_numerateur, m_denominateur);
m_denominateur /= std::gcd(m_numerateur, m_denominateur);
}
double Fraction::valeur_reelle() const noexcept
{
return double(m_numerateur) / m_denominateur;
}
std::ostream& operator <<(std::ostream flux, Fraction f)
{
return flux << f.m_numerateur << '/' << f.m_denominateur; // c'est la que ça bloque
}
int main()
{
//mon main
} |