Bonjour.
J'ai récemment écrit la classe de wrapper simple suivante:
j'essaye ensuite d'exécuter ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template <class Wrapped> class Wrapper : public Wrapped { public: Wrapper():Wrapped(){} template <class T> Wrapper(T t):Wrapped(t) { char u;//juste pour déclencher un warning. } };
quand je regarde le message du compilo, j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int main() { std::string s; char f[32]="dummy" Wrapper<std::string> u(s); Wrapper<std::string> v("foo"); Wrapper<std::string> w(f); }
La partie en rouge montre que le constructeur prend pour string un passage par valeur... or j'aimerais bien avoir, dans ce cas, un passage par référence de type const std::string &...Envoyé par gcc 4.4.1
il faudrait pour cela spécialiser le template, je suppose sur un critère de taille du parametre wrapped. Je me souviens avoir déjà vu ce genre de bout de code sur le forum, mais impossible de le retrouver ... si vous savez ou le trouver ou comment faire , merci d'avance
Partager