Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ISO C++ prohibe declaracion ostream sin tipo

Estas en el tema de ISO C++ prohibe declaracion ostream sin tipo en el foro de C/C++ en Foros del Web. Hola muy buenas. Intentare ser lo mas breve y claro posible: Dispongo una clase mat, todo lo que está hecho funciona perfectamente. Me dispongo a ...
  #1 (permalink)  
Antiguo 08/03/2008, 17:16
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 0
ISO C++ prohibe declaracion ostream sin tipo

Hola muy buenas.
Intentare ser lo mas breve y claro posible:
Dispongo una clase mat, todo lo que está hecho funciona perfectamente. Me dispongo a sobrecargar el operador<<, pero al añadir a mi código la siguiente linea:
Cita:
ostream &operator<< (ostream&, const mat&);
el compilador g++ me suelta este mensaje:
Cita:
mat.h:21: error: ISO C++ prohíbe la declaración de ‘ostream’ sin tipo
mat.h:21: error: expected ‘;’ before ‘&’ token

Vease que ambos son en la misma linea, el segundo me sorprende mas que el primero, ya que no veo que pasa ni con el ; ni con el &
Hasta ahora venia utilizando la libreria <iostream.h>, pero g++ me recomienda usar <iostream> en su lugar, creo que puede tener algo que ver, pero no sé que diferencias hay entre una y otra, y en diferentes páginas de internet ponen el mismo ejemplo para ambas librerias, con un código para "<<" prácticamente identicó al mio. (cambiando mat por lo que sea, o añadiendo friend, que también me da error)

Si alguien me ilumina el camino se lo agradecería.
  #2 (permalink)  
Antiguo 09/03/2008, 07:15
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: ISO C++ prohibe declaracion ostream sin tipo

En un arranque de inspiracion he modificado el código por:
Código:
std::ostream &operator<<(std::ostream&, const mat&);
y me ha mostrado el error:
Cita:
error: ‘std::ostream& mat::operator<<(std::ostream&, const mat&)’ debe tomar un argumento exactamente
Así que remodifique mi prototipo por:
Código:
std::ostream &operator<<(const mat&);
Y ya no muestra error. Lo que no significa que funcione, ya que cuando en el archivo para probar la clase hago:
Código:
mat m; cout <<m;
el programa muestra unos errores que no podría describir, pero entre ellos hay uno que dice que no hay acciones para cout<<

Si en vez de
Código:
std::ostream &operator<<(const mat&);
pongo
Código:
std::ostream &operator<<(std::osstream&);
el programa sigue sin funcionar.

Sigo pensando que el primer prototipo debería funcionar ya que es el usado en todos los ejemplos de internet. ¿Por qué no me va a mi? (el ostream &operator<< (ostream&, const mat&);)
  #3 (permalink)  
Antiguo 10/03/2008, 14:46
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: ISO C++ prohibe declaracion ostream sin tipo

Sinceramente, no sé cual fue mi fallo, ya que mi actual prototipo del operador << es idéntico al que pongo en el primer mensaje, pero la cuestión es que ahora funciona y antes no.

Por tanto doy cerrado este tema.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.