La regola di una classe per intestazione non ha senso. Se questo non funziona:
#include <header1>
#include <header2>
poi qualche variazione di questa volontà:
#include <header1a>
#include <header2>
#include <header1b>
Questo potrebbe risultare in meno di una classe per un colpo di testa, ma si può sempre usare (void *) e calchi e funzioni inline (nel qual caso il 'inline' sarà debitamente ignorato dal compilatore). Quindi la domanda, mi sembra, può essere ridotto a:
class A
{
// ...
void *pimpl;
}
E 'possibile che l'attuazione privata, Pimpl, dipende dalla dichiarazione di A? Se è così allora pimpl.cpp (come intestazione) deve entrambi precedere e seguire A.h. Ma dato che puoi sempre, ancora una volta, usare (void *) e cast e funzioni inline nelle intestazioni precedenti, può essere fatto.
Certo, potrei sbagliarmi. In entrambi i casi: Ick.
Cosa succede se la libreria senza header A dipende dalla libreria B di sola DLL? O è escluso dall'ultima frase? Ovviamente potresti sempre reimplementarlo come header, quindi forse non impossibile. – Skurmedel
devi parlare con altre lingue? – Anycorn
@Skurmedel: C++ non definisce alcuna funzione simile a DLL, quindi qualsiasi cosa verrà specificata per l'implementazione. Dubito che faccia alcuna differenza però. –