Bonjour à tous
Ça fait maintenant plusieurs jours que je planche sur un petit programme de calcul en C++, et maintenant je me retrouve bloqué depuis un moment sur la conception du programme
Voila, je vous explique mon problème :
Je souhaite representer un calcul par la classe suivante (c'est volontairement abrégé, c'est juste histoire de se donner une idée) :
Avec ça, je pourrais créer autant d'opérateurs que je veux (je suis très partisan de l'Open-Close).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Operateur { public : Operateur(Element l, Element r) : left(l), right(r), result(null) {} Element getResult(){return result;} virtual void calc(){} = 0; /* cette fonction est à implémenter suivant les types d'elements manipulés */ private : Element left; Element right; Element result; };
Pour Element, j'avais au tout d'abord pensé à simplement créer une classe abstraite pure, qui ne posséderait que la méthode "getValue", afin de conserver l'Open-Close et donner à la possibilité à l'utilisateur de créer ses propres éléments et ses propres opérations.
Le problème vient de là : comment faire si l'on décide de créer (par exemple) un élément Frequency (dont getValue renverait un float) , et un élément NaturalInteger (dont getValue renverrait un int)
J'avais bien pensé à utiliser un template, mais le problème ne fait que ce déplacer, comment savoir quel type de données je vais manipuler dans les surcharges de calc() ?
J'avoue que là, je sèche totalement. Est-ce que l'un de vous pourrait m'aider ?
W. Bishop
PS : Pour les modos : si ce sujet n'est pas dans le bon thread, je m'en excuse et n'hésitez pas à le déplacer![]()
Partager