Conseil ; créer un type de données
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:
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); |
donc si je veut affecter une valeur à une variable de type truth, j'aurais qlq chose comme sa:
Code:
1 2
|
truth t = XXXX_to_truth(valeur); |
C’est un peu artificiel de dire ça, mais je trouve ça une peu moche.
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.
Auriez-vous une astuce ou un conseil au sujet afin d'implémenter ce mécanisme ?
Merci d'avance.