/*<br>    saludo<br>    he creado una plantilla para poder sobrecargar << de mi clase a cualquier otra<br>    esto funciona para cout pero no para stringstream<br>    en el siguiente codigo me explico mejor<br>*/<br>
<br>#include <iostream><br>#include <sstream><br>using namespace std;<br><br>class miclase{<br>       public:<br>       template <typename T> friend<br>       T& operator<<(T& o, const miclase& x)     {  return o<<"esta es miclase";}
<br>};<br><br>main(){<br>    miclase x;<br>    cout<<x<<endl;  //esto me sale bien<br><br>    //   hasta aqui si no agrega las siguientes lineas el programa se compila sin errores<br>    //   puede comentar las siguientes lineas para verificar lo que digo
<br><br>      stringstream c;<br>    c<<x;<br>    cout<<c.str()<<endl;<br><br>        //     el punto es que la plantilla que funciona en cout<<x<<endl;<br>        //     entiendo que deberia funcionarme en c<<x;
<br><br>        //     me da el siguiente error al compilar<br>        /*<br>                test.cpp: In function 'T& operator<<(T&, const miclase&) [with T = std::stringstream]':<br>                test.cpp
:23:   instantiated from here<br>                test.cpp:12: error: inicialización inválida de la referencia de tipo 'std::stringstream&' desde una expresión de                     tipo 'std::basic_ostream<char, std::char_traits<char> >'
<br>        */<br><br>}<br><br><br>