Hola,<br><br>haciendo un ejercicio de cadenas me encuentro con lo siguiente:<br><br><i>// Cadena.h<br>#include <iostream><br>#include <cstream></i><br>...<br><b>class </b><i>Cadena</i> <b>{</b><br> <b>private:</b><br>
<u><b>10-> </b></u> <b>char</b> *<i>pstr</i>;<br> <b>public:</b><br>  ...<br><b><u>25-></u>  friend</b> <b>ostream & </b><b>operator</b><< <b>(ostream&, const Cadena&);</b><br> ....<br><b>}</b><br>
<br><i>//Cadena.cpp<br><u><b>5-></b></u> #include "Cadena.h"</i><br><b>using namespace </b>std;<br>...<br><b>ostream & operator</b><< <b>(ostream&</b> os<b>, const Cadena&</b> cad<b>)</b><br>
<b>{</b><br><u><b>71-></b></u> os << cad.pstr;<br> <b>return</b> os<b>;</b><br><b>}</b><br>....<br><br>Y cuando intento compilar en dev-C++ 4.9.9.2 me da los errores:<br>in file included from Cadena.cpp<br>25 ISO C++ forbids declaration od 'ostream' with no type<br>
25 'ostream' is neither function nor member function; cannot be declared friend<br>25 expecter ; before & token<br>In function 'std::ostream& operator<<(std::ostream&,constCadena&)<br>10char* Cadena::pstr is private<br>
71 within this context<br><br>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.<br>Me gustaria comprender porque no me deja hacer esto, porque yo pienso que me tendria que permitir hacerlo, no veo que puede estar mal.<br>
<br>Gracias y saludos!<br><br><br><br>