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

Steven Davidson srd4121 en njit.edu
Mie Mayo 19 01:34:00 CEST 2010


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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100519/825ff6bc/attachment.html>


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