Cuando intento compilar mi programa, el compilador se queja de esta línea en un archivo .h que no incluí.¿Qué debo incluir en mi archivo de cabecera para ostream
ostream & Print (ostream & stream);
¿Cómo se puede reparar esto?
Cuando intento compilar mi programa, el compilador se queja de esta línea en un archivo .h que no incluí.¿Qué debo incluir en mi archivo de cabecera para ostream
ostream & Print (ostream & stream);
¿Cómo se puede reparar esto?
Si #include <ostream>
, ostream
se definirá en el espacio de nombres std
:
#include <ostream>
// ...
std::ostream & Print (std::ostream & stream);
código mínimo para esta declaración para compilar:
#include <iosfwd>
using namespace std;
No debe poner 'using namespace std;' en un archivo de encabezado. – Yacoby
de acuerdo. Pero no dije que este código iba a un archivo de encabezado. Si no tiene control sobre el contenido del archivo de encabezado incluido, estas dos líneas lo harán funcionar desde el archivo .cpp. En cualquier caso,
Uso 'utilizar' si no desea extraiga el espacio de nombres completo, p. ej .:
#include <iosfwd>
using std::ostream;
Si su programa no es enorme , simplemente ponga 'using std :: ostream' después del #include; la vida y las líneas son demasiado cortas para escribir std :: más de lo que tiene que –
Mejor puede ser #include, que contiene solo declaraciones directas. –
@Tom Womack: NUNCA SIEMPRE ponga declaraciones de uso en un archivo de encabezado. La vida es muy corta para resolver el problema que eso causará cuando explote en tu cara. –