La regla de una clase por encabezado no tiene sentido. Si esto no funciona:
#include <header1>
#include <header2>
continuación algunas variaciones de esta voluntad:
#include <header1a>
#include <header2>
#include <header1b>
Esto podría resultar en menos de una clase por cabecera, pero siempre se puede utilizar (void *) y cilindros y funciones en línea (en cuyo caso el 'compilador' probablemente ignorará debidamente 'en línea'). Así que la pregunta, me parece, se puede reducir a:
class A
{
// ...
void *pimpl;
}
¿Es posible que la puesta en práctica privada, pimpl, depende de la declaración de A? Si es así, pimpl.cpp (como encabezado) debe preceder y seguir a A.h. Pero como siempre puede, una vez más, usar (void *) y moldes y funciones en línea en encabezados anteriores, se puede hacer.
Por supuesto, podría estar equivocado. En cualquier caso: Ick.
¿Qué pasa si la biblioteca A sin encabezado depende de la biblioteca B solo DLL? ¿O eso está descartado por la última oración? Por supuesto, siempre puedes volver a implementarlo como encabezados, por lo que tal vez no sea imposible. – Skurmedel
¿tiene que hablar con otros idiomas? – Anycorn
@Skurmedel: C++ no define ninguna facilidad de tipo DLL, por lo que se especificará la implementación. Sin embargo, dudo que haga la diferencia. –