Bonjour,
Dans le cadre d'un projet j'ai besoin de créer un nouveau type de données : Truth. Ce dernier est en fait un float dans le domaine de définition est [0, 1].
J’ai créé une batterie de fonction qui aura pour rôle de se charger de vérifier si la valeur qu'on veut affecter à une variable de type truth appartient au domaine [0, 1]. Leurs protos sont les suivants ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 typedef float truth;
donc si je veut affecter une valeur à une variable de type truth, j'aurais qlq chose comme sa:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 truth int_to_truth(int value); truth uint_to_truth(unsigned int value); truth sint_to_truth(signed int value); truth shint_to_truth(short int value); truth lint_to_truth(long int value); truth luint_to_truth(long unsigned int value); truth lsint_to_truth(long signed int value); truth shuint_to_truth(short unsigned int value); truth shsint_to_truth(short signed int value); truth float_to_truth(float value); truth double_to_truth(double value); truth ldouble_to_truth(long double value);
C’est un peu artificiel de dire ça, mais je trouve ça une peu moche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 truth t = XXXX_to_truth(valeur);
J’aimerai faire en sorte que lorsque l'utilisateur affecte une valeur à une variable de truth un contrôle systématique soit fait afin de s'assurer qu'elle est effectivement entre 0 et 1. dans le monde de l'objet ça serait un événement qui sera déclenché à chaque fois qu'on fait appel à l'opérateur = et ça ne serait pas un problème de surcharger l'opérateur = sous C++.
pour obtenir une écriture plus élégante :
Le problème c'est que le C ne supporte ni la surcharge de fonction, encore moins la surcharge d'opérateur ou les événements.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 truth t = valeur ;
Auriez-vous une astuce ou un conseil au sujet afin d'implémenter ce mécanisme ?
Merci d'avance.
Partager