Una delle classi nel mio programma utilizza alcune librerie di terze parti. oggetto Library è un membro privato della mia classe:Intestazioni C++ - separazione tra interfaccia e dettagli di implementazione
// My.h
#include <3pheader.h>
class My
{
...
private:
3pObject m_object;
}
Il problema di questo - qualsiasi altra unità nel mio programma che utilizza La mia classe dovrebbe essere configurato per includere 3p intestazioni. Passare a un altro tipo di 3p metterà a repentaglio l'intera build ... Vedo due modi per risolvere questo problema: uno è quello di rendere 3pObject extern e trasformare m_Object in un puntatore, inizializzato nel costruttore; in secondo luogo è quello di creare un "interfaccia" e classi "factory" ed esportarli ...
Potrebbe suggerire un altro modo per risolvere questo?
Qualsiasi motivo per non utilizzare boost :: scoped_ptr? – grigy
Niente di specifico - sono stato abituato a usare auto_ptr - probabilmente in questo caso è più appropriato usare scoped_ptr dato che non c'è trasferimento di proprietà –