Bonsoir à toutes et à tous,
Il y a peu, je me suis décidé à faire un exercices qu'on peut trouver sur internet, un exercice qui nous proposait de créer une classe qui gérait les fonctions.
Je m'y suis alors attelé et, bien évidemment, je me suis heurté à quelques obstacles.
J'attends donc vos avis, conseils d'impatience
Mais sans plus attendre, les proooooooblèèèmeeees :-° .
Appel de constructeur
Tout d'abord, je cite Nanoc dans le cahier des charges de la fonction :
3) Construction à partir d'une chaine de caractère de la forme "35/8" (sans les "").
On doit donc être capable d'appeler un constructeur qui gère ce cas :
Fraction maFraction = 35/8;
Ma question porte donc sur le type du constructeur surchargé. Je me demande quel type doit-il prendre en compte. Un string ? Ce qui nous donnerait :
1 2 3 4 5
|
Fraction::Fraction(std::string fraction)
{
// L'implémentation du constructeur
} |
Ou un autre type ?
Si c'est bel est bien un string que le constructeur attends, alors il faudra sans doute réussir à séparer la chaîne en deux. Faudrait-il alors recréer une fonction qui sépare cette chaîne ?
Passage de double en int
Toujours pour citer ce cher Nanoc :
2) Construction à partir d'un nombre à virgule (double).
Cette fois-ci on doit donc pouvoir écrire :
Fraction maFraction = 2.38;
Et les deux attributs de ma classe (m_numerateur et m_denominateur) doivent être égaux respectivement à 238 et 100.
Le seul problème, c'est que je me doute qu'il faut multiplier par 10 jusqu'à avoir un nombre entier, le seul problème est de savoir QUAND a-t-on cet entier ? Quel test permet de le montrer ?
Surcharge d'opérateur ?
Finalement, et puisque j'aime bien les citations :-°
8) Proposer un moyen de connaître le dénominateur et le numérateur.
Faire ceci à l'air simple à première vue. On pourrait se contenter d'utiliser des accesseurs getNumerateur() et getDenominateur().
Mais j'ai des ambitions plus (trop ?) grande ^^
J'aimerais bien essayé de surcharger un opérateur, un peut comme [] pour les tableaux.
Ma question est donc, est-il possible de faire ça :
1 2 3 4 5 6 7 8
|
int Fraction::operator()(const int nombre)
{
if (nombre = 0)
return m_numerateur;
else
return m_denominateur;
} |
Valal'
Merci de m'avoir lu ^^
iDanz
Partager