Utilisation de spécialisation de template pour convertir.
33 réponses
Stephane Wirtel
Bonjour,
Est-il possible de créer un template via spécialisation permettant
de convertir des types définit (bool, int, string, ...) vers un
std::string ?
Je m'explique.
J'essaie de créer une classe permettant de lire des settings provenant d'un
fichier de conf.
Donc, dedans, j'ai créé une méthode générique, du style :
class Settings {
private:
typedef std::map <std::string, std::string> MapSettings;
MapSettings mSettings;
public:
template <class T> const T& Read (const std::string& pVariable,
const T& pDefaultValue) {
/**
* Si variable présente dans la map on retourne la valeur
* trouvée, sinon, on retourne la valeur par défaut.
* On rajoute tout de même pDefaultValue dans map pour une prochaine
* utilisation.
*/
Ce que j'aimerais c'est que TranslateToString prenne ma valeur et la
transforme directement en chaine de caractère.
Pour cela, j'avais pensé à un template sur une fonction ou sur une méthode,
mais cela ne semble pas fonctionner correctement. Voir mon post précédent.
Mais sinon, j'avais pensé à ceci.
dans ma classe Settings, il y aurait la méthode TranslateToString définie
comme suit :
class Settings {
private:
...
public:
...
template <class T> std::string TranslateToString (const T& pValue) {
}
template <> std::string TranslateToString <bool> (const bool& pValue) {
return (pValue ? "True" : "False");
}
template <> std::string TranslateToString <int> (const int& pValue) {
return "Chaine de test...";
}
};
Est-ce que quelqu'un peut m'aider ? Il me manque une solution pour résoudre
mon problème qui je pense doit certainement avec une réponse de ce type.
| Le Sun, 22 May 2005 12:15:00 -0400, Michel Michaud a écrit : | > Pierre semble participer activement à ce forum, ça me paraissait | > suffisant pour penser qu'il sait certaines choses utiles pour voir que | > le livre n'est pas si bien qu'il en parlait. | | C'est assez délicat. On a facilement la tentation de croire que ce qu'on | a lu est exhaustif.
Cela m'étonnerait que ce soit le cas de Pierre -- qui, si j'en crois quelques uns de ses messages, a dépassé cet état de naïveté...
-- Gaby
Pierre THIERRY <nowhere.man@levallois.eu.org> writes:
| Le Sun, 22 May 2005 12:15:00 -0400, Michel Michaud a écrit :
| > Pierre semble participer activement à ce forum, ça me paraissait
| > suffisant pour penser qu'il sait certaines choses utiles pour voir que
| > le livre n'est pas si bien qu'il en parlait.
|
| C'est assez délicat. On a facilement la tentation de croire que ce qu'on
| a lu est exhaustif.
Cela m'étonnerait que ce soit le cas de Pierre -- qui, si j'en crois
quelques uns de ses messages, a dépassé cet état de naïveté...
| Le Sun, 22 May 2005 12:15:00 -0400, Michel Michaud a écrit : | > Pierre semble participer activement à ce forum, ça me paraissait | > suffisant pour penser qu'il sait certaines choses utiles pour voir que | > le livre n'est pas si bien qu'il en parlait. | | C'est assez délicat. On a facilement la tentation de croire que ce qu'on | a lu est exhaustif.
Cela m'étonnerait que ce soit le cas de Pierre -- qui, si j'en crois quelques uns de ses messages, a dépassé cet état de naïveté...
-- Gaby
Pierre THIERRY
Le Sun, 22 May 2005 22:55:50 +0200, Gabriel Dos Reis a écrit :
Cela m'étonnerait que ce soit le cas de Pierre -- qui, si j'en crois quelques uns de ses messages, a dépassé cet état de naïveté...
Je suis un garçon naïf et impressionnable.
Franchement, Nowhere man --
OpenPGP 0xD9D50D8A
Le Sun, 22 May 2005 22:55:50 +0200, Gabriel Dos Reis a écrit :
Cela m'étonnerait que ce soit le cas de Pierre -- qui, si j'en crois
quelques uns de ses messages, a dépassé cet état de naïveté...
Je suis un garçon naïf et impressionnable.
Franchement,
Nowhere man
--
nowhere.man@levallois.eu.org
OpenPGP 0xD9D50D8A
Le Sun, 22 May 2005 22:55:50 +0200, Gabriel Dos Reis a écrit :
Cela m'étonnerait que ce soit le cas de Pierre -- qui, si j'en crois quelques uns de ses messages, a dépassé cet état de naïveté...
Je suis un garçon naïf et impressionnable.
Franchement, Nowhere man --
OpenPGP 0xD9D50D8A
kanze
Pierre THIERRY wrote:
Pierre semble participer activement à ce forum, ça me paraissait suffisant pour penser qu'il sait certaines choses utiles pour voir que le livre n'est pas si bien qu'il en parlait.
C'est assez délicat. On a facilement la tentation de croire que ce qu'on a lu est exhaustif. Et les posts sur ce forum sont de qualité très variée, et il faut là aussi faire le tri.
Le Delannoy, par exemple, ne mentionne pas du tout les spécialisations de patrons de type 'template<> foo()'. Lorsque j'en ai vu sur le forum, j'ai véritablement cru à une incompréhension du principe des templates (je n'avais peut-être pas totalement tort, néanmoins...).
Attention là aussi. Parce que le C++ a évolué, et beaucoup de textes anciens ne le cite pas non plus. Barton et Nackman ne le connaît pas, par exemple, et malgré son âge, il reste une des références incontournables. C'est un des rares livres qui traitent la combinaison des templates et des fonctions virtuelles : quand on se sert d'un et quand l'autre, et comment on les combine parfois.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Pierre THIERRY wrote:
Pierre semble participer activement à ce forum, ça me
paraissait suffisant pour penser qu'il sait certaines choses
utiles pour voir que le livre n'est pas si bien qu'il en
parlait.
C'est assez délicat. On a facilement la tentation de croire
que ce qu'on a lu est exhaustif. Et les posts sur ce forum
sont de qualité très variée, et il faut là aussi faire le tri.
Le Delannoy, par exemple, ne mentionne pas du tout les
spécialisations de patrons de type 'template<> foo()'. Lorsque
j'en ai vu sur le forum, j'ai véritablement cru à une
incompréhension du principe des templates (je n'avais
peut-être pas totalement tort, néanmoins...).
Attention là aussi. Parce que le C++ a évolué, et beaucoup de
textes anciens ne le cite pas non plus. Barton et Nackman ne le
connaît pas, par exemple, et malgré son âge, il reste une des
références incontournables. C'est un des rares livres qui
traitent la combinaison des templates et des fonctions
virtuelles : quand on se sert d'un et quand l'autre, et comment
on les combine parfois.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Pierre semble participer activement à ce forum, ça me paraissait suffisant pour penser qu'il sait certaines choses utiles pour voir que le livre n'est pas si bien qu'il en parlait.
C'est assez délicat. On a facilement la tentation de croire que ce qu'on a lu est exhaustif. Et les posts sur ce forum sont de qualité très variée, et il faut là aussi faire le tri.
Le Delannoy, par exemple, ne mentionne pas du tout les spécialisations de patrons de type 'template<> foo()'. Lorsque j'en ai vu sur le forum, j'ai véritablement cru à une incompréhension du principe des templates (je n'avais peut-être pas totalement tort, néanmoins...).
Attention là aussi. Parce que le C++ a évolué, et beaucoup de textes anciens ne le cite pas non plus. Barton et Nackman ne le connaît pas, par exemple, et malgré son âge, il reste une des références incontournables. C'est un des rares livres qui traitent la combinaison des templates et des fonctions virtuelles : quand on se sert d'un et quand l'autre, et comment on les combine parfois.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34