forward declaraciones

¿Por qué necesito usar declaraciones directas para una clase cuando ya estoy incluyendo el archivo de encabezado relevante? ¡Ha solucionado mi problema pero me confundió!

esencialmente la clase A necesita saber sobre la clase B y viceversa. Estaba recibiendo el error "error de sintaxis - identificador" antes de incluir las declaraciones de reenvío. Tenía la impresión de que incluir un archivo de encabezado significaba que estabas declarando la otra clase donde pusiste # include.