Par la suite en hérité une classe template de cette classe, il aurait été possible
de faire des tests automatiques lors de la modification de la valeur de l'objet encapsulé.
Voici le lien suivant qui explique plus en détail la démarche sur laquelle je me base.
http://www.oxyware.com/CheckedInt.pdf
Le léger soucis avec ce code, est qu'il n'est pas possible d'employer des valeurs basé
sur des doubles, floats.
De plus, afin de le rendre encore plus générique, cela aurait pû être utile de vérifier
sur des types définit par le développeur, comme par exemple des classes gérant les dates.
Mais cette dernière solution n'est pas fort envisageable car il y a instanciation
d'un objet de type datetime et cela ne peut se faire qu'au RunTime.
La question est, avez-vous déjà essayé de résoudre ce problème, si oui de quelle manière.
template<typename T> class OutOfBoundsThrower { T low; T high; public: OutOfBoundsThrower(T const& lo, T const& hi) : low(lo), high(hi) {}
T operator()(T const& t) const { if(t < low || t > high) throw std::out_of_range("O kurcza!"); return t; } };
Falk
Jean-Marc Bourguet
Stephane Wirtel writes:
Dans les specs présentes et/ou à venir, pourra-t-on utiliser des built-in types différents de int comme template arguments ?
Je n'ai rien vu a ce sujet, et j'en doute.
Je pensais pouvoir créer une class template permettant de checker la valeur d'une variable encapsulée dans cette classe.
Comme souvent, ajouter un niveau d'indirection aide. Un petit probleme ici, c'est que dans une classe on ne peut pas definir des constantes autres qu'entieres avec de bonnes chances que le compilateur les voient a la compilation, donc je propose d'utiliser des fonctions inline.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Dans les specs présentes et/ou à venir, pourra-t-on utiliser des
built-in types différents de int comme template arguments ?
Je n'ai rien vu a ce sujet, et j'en doute.
Je pensais pouvoir créer une class template permettant de checker la
valeur d'une variable encapsulée dans cette classe.
Comme souvent, ajouter un niveau d'indirection aide. Un petit
probleme ici, c'est que dans une classe on ne peut pas definir des
constantes autres qu'entieres avec de bonnes chances que le
compilateur les voient a la compilation, donc je propose d'utiliser
des fonctions inline.
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Dans les specs présentes et/ou à venir, pourra-t-on utiliser des built-in types différents de int comme template arguments ?
Je n'ai rien vu a ce sujet, et j'en doute.
Je pensais pouvoir créer une class template permettant de checker la valeur d'une variable encapsulée dans cette classe.
Comme souvent, ajouter un niveau d'indirection aide. Un petit probleme ici, c'est que dans une classe on ne peut pas definir des constantes autres qu'entieres avec de bonnes chances que le compilateur les voient a la compilation, donc je propose d'utiliser des fonctions inline.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
template<typename T> class OutOfBoundsThrower { T low; T high;
Ca augmente la taille des objets et complique leur construction.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
template<typename T> class OutOfBoundsThrower
{
T low;
T high;
Ca augmente la taille des objets et complique leur construction.
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
template<typename T> class OutOfBoundsThrower { T low; T high;
Ca augmente la taille des objets et complique leur construction.
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org