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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
}