Hola,<br><br>Estaba practicando con los templates y queria hacer un template "variable", que pudiera representar a todos los tipos de variables y sobrecargar las operaciones con el mismo significado que tienen, como ejercicio academico.<br>
<br>template <class T><br>class Var<br>{<br> T _val;<br> public:<br> Var(T v=0): _val(v) {}<br> T getVar() const;<br> ...<br><u> template <class T></u><br> friend Var operator+(const Var v, const double);<br> .....<br>
}<br><br>inline T Var<T>::getVar() const { return _val;}<br>....<br>template <class T><br>Var operator+(const Var v, const double d)<br>{<br>  Var<T> res( (T) ( (double)v.getVar() + d) );<br>return res;<br>
}<br>....<br><br>Si pongo la linea subrayada me dice declaration of class T shadows template param class T.<br>Si no la pongo me dice Friend declaration Var<T> operator+(const Var<T>&,double) declares a non-template function<br>
<br>Seguro que tiene mas errores porque yo con lo de los templates aun estoy muy verde, conceptualmente los entiendo pero la sintaxis me pierde.<br><br>Saludos!<br>