----- Mensaje original ----
De: Diego Martín Nieto Cid <[EMAIL PROTECTED]>
Para: Una lista para consultas de programación <[email protected]>
Enviado: viernes 5 de octubre de 2007, 14:31:02
Asunto: Re: [Prog] sstream: Operador >> sobre temporal.

El vie, 05-10-2007 a las 13:36 -0300, Leandro Lucarella escribió:
> Es raro que compile, y que te tire un error de ambigüedad, porque el
> problema es que estás pasando como temporal un objeto que la función
> (operator>>) toma como referencia. Eso en términos generales no tiene
> sentido, porque si pasás algo como referencia (no const) es porque lo
> querés modificar, y si pasás un objeto temporal, lo que modifiques
> queda en la nada. En este caso en particular, parece tener _algo_ de
> sentido, pero igual nunca es una buena idea pasar una referencia a un
> temporal a nadie.

>>Comprendido. Ahora, es aun más raro que con un int compile sin
>>problemas :S. Lo que me permite hacer algo así:

        >>int i;
        >> istringstream( "50" ) >> i;

El operador >> esta definido de todas estas formas (*), supongo que cuando lo 
usas con int, toma la 4 definicion , mientras que con char no debe saber con 
cual quedarse de las del grupo de abajo, asi que da la ambiguedad.
(*)
istream& operator>> (bool& val );
istream& operator>> (short& val );
istream& operator>> (unsigned short& val );
istream& operator>> (int& val );
istream& operator>> (unsigned int& val );
istream& operator>> (long& val );
istream& operator>> (unsigned long& val );
istream& operator>> (float& val );
istream& operator>> (double& val );
istream& operator>> (long double& val );
istream& operator>> (void*& val );
istream& operator>> (streambuf& sb );
istream& operator>> (istream& ( *pf )(istream&));
istream& operator>> (ios& ( *pf )(ios&));
istream& operator>> (ios_base& ( *pf )(ios_base&));

*** the following functions are not members but GLOBAL functions:
 
istream& operator>> (istream& is, char& ch );
istream& operator>> (istream& is, signed char& ch );
istream& operator>> (istream& is, unsigned char& ch );
 
istream& operator>> (istream& is, char* str );
istream& operator>> (istream& is, signed char* str );
istream& operator>> (istream& is, unsigned char* str )> 
> PD: Si el error es algo corto, es mejor que lo mandes en el mail
> entero (aunque sea abajo de todo para que no "ensucie" tanto el
> mensaje), porque es medio molesto tener que ir a verlo a otro lado.
> 

>>lo voy a tener en cuenta.




Cristian.



      Las últimas noticias sobre el Mundial de Rugby 2007 están en Yahoo! 
Deportes. ¡Conocelas!
http://ar.sports.yahoo.com/mundialderugby
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a