[C con Clase] Sobrecarga de operadores: problemas con ostream

vicente lozano vicentelozano en gmail.com
Mar Mar 10 12:06:28 CET 2009


Hola,

haciendo un ejercicio de cadenas me encuentro con lo siguiente:

*// Cadena.h
#include <iostream>
#include <cstream>*
...
*class **Cadena* *{*
 *private:*
*10-> * *char* **pstr*;
 *public:*
  ...
*25->  friend* *ostream & **operator*<< *(ostream&, const Cadena&);*
 ....
*}*

*//Cadena.cpp
5-> #include "Cadena.h"*
*using namespace *std;
...
*ostream & operator*<< *(ostream&* os*, const Cadena&* cad*)*
*{*
*71->* os << cad.pstr;
 *return* os*;*
*}*
....

Y cuando intento compilar en dev-C++ 4.9.9.2 me da los errores:
in file included from Cadena.cpp
25 ISO C++ forbids declaration od 'ostream' with no type
25 'ostream' is neither function nor member function; cannot be declared
friend
25 expecter ; before & token
In function 'std::ostream& operator<<(std::ostream&,constCadena&)
10char* Cadena::pstr is private
71 within this context

El tema es que si en lugar de acceso directo al elemento y friend lo pongo
sin ser friend y con un getter (esto lo he probado con enteros) entonces
funciona.
Me gustaria comprender porque no me deja hacer esto, porque yo pienso que me
tendria que permitir hacerlo, no veo que puede estar mal.

Gracias y saludos!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090310/26ae72b7/attachment.html>


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