#include <iosfwd>De esta forma podemos utilizar los tipos ostream, istream, etc. sin necesidad de traer la definición de todas las clases de entrada y salida. Generalmente deberíamos utilizar el <iosfwd> en nuestro .h cuando no hagamos un mayor uso que sólo referenciarlas. Un ejemplo:
#ifndef EMPLEADO_IO_H #define EMPLEADO_IO_H #include <iosfwd> // forward declaration de ostream class Empleado; // forward declaration de nuestro tipo // Aquí no necesitamos conocer el tamaño ni de Empleado, // ni de ostream, podemos compilar sólo con sus forward // declarations. void write_empleado_en_formato_binario(const Empleado&, ostream&); #endifRegla: Siempre intenta usar las forward declarations antes que incluir los archivos de cabecera que definen las clases, los cuales suelen mostrar detalles de implementación que son propensos a cambiar. Siguiendo esta regla mejoraremos el tiempo de compilación y la cantidad de archivos a compilar al realizar una modificación en un .h.
Para más información, ver la sección 27.3 Forward declarations [iostream.forward] del último borrador público del estándar de C++