[C con Clase] Pregunta sobre cin y cout, al diseño de una clase

Jorge García jorgeantonio49 en gmail.com
Mie Mayo 19 19:38:08 CEST 2010


Gracias Steven era justo lo que necesitaba.
Gracias también a Leonardo por responder.
El mié, 19-05-2010 a las 01:34 +0200, Steven Davidson escribió:
> Hola Jorge Antonio,
> 
> 2010/5/19 Jorge García <jorgeantonio49 en gmail.com>
>         Hola!
>         Ya tengo un rato programando y me da un poco de pena hacer
>         esta
>         pregunta, por que me imagino que la respuesta es trivial, solo
>         que he
>         buscado y no encuentro solución que me agrade.
>         
>         ¿Hay algún método que pueda implementar para poder usar una
>         clase hecha
>         por con cout y cin?
>         
>         Concretamente tengo una clase Vector3D y me gustaría definirle
>         un
>         comportamiento del estilo:
>         
>         Vector3D a(1, 0, 1);
>         
>         cout << "a = " << a << endl;
>         
>         ¿Es posible hacerlo? y si si, ¿Como es el prototipo del
>         método?
>         Gracias de antemano
>         
> 
> 
> Sí, claro. Esto se trata de la sobrecarga de operadores. De hecho, el
> operador << ya está sobrecargado para los tipos fundamentales.
> Simplemente agrega otra sobrecarga para tu tipo que es la clase
> 'Vector3D'. Esto es,
> 
> ostream & operator<<( ostream &os, const Vector3D &v )
> {
>   return os << '(' << v.x() << ',' << v.y() << ',' << v.z() << ')';
> }
> 
> O algo parecido.
> 
> Para que funcione para 'cin', usa este prototipo:
> 
> istream & operator>>( istream &is, Vector3D &v );
> 
> Realmente, podemos usar otras clases que deriven de estas dos, como
> puede ser 'ofstream' e 'ifstream' para ficheros.
> 
> 
> Espero haber aclarado la duda.
>  
> Steven
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ






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