/*<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>