[C con Clase] problema sobrecargando << hacia stringstream

Pedro Mateo pedromateoa en gmail.com
Lun Mar 26 06:30:08 CEST 2007


/*
    saludo
    he creado una plantilla para poder sobrecargar << de mi clase a
cualquier otra
    esto funciona para cout pero no para stringstream
    en el siguiente codigo me explico mejor
*/

#include <iostream>
#include <sstream>
using namespace std;

class miclase{
       public:
       template <typename T> friend
       T& operator<<(T& o, const miclase& x)     {  return o<<"esta es
miclase";}
};

main(){
    miclase x;
    cout<<x<<endl;  //esto me sale bien

    //   hasta aqui si no agrega las siguientes lineas el programa se
compila sin errores
    //   puede comentar las siguientes lineas para verificar lo que digo

      stringstream c;
    c<<x;
    cout<<c.str()<<endl;

        //     el punto es que la plantilla que funciona en cout<<x<<endl;
        //     entiendo que deberia funcionarme en c<<x;

        //     me da el siguiente error al compilar
        /*
                test.cpp: In function 'T& operator<<(T&, const miclase&)
[with T = std::stringstream]':
                test.cpp:23:   instantiated from here
                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> >'
        */

}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070326/2173e6aa/attachment.html>


Más información sobre la lista de distribución Cconclase