Una de las clases de mi programa utiliza una biblioteca de terceros. Los objetos de biblioteca es un miembro privado de mi clase:encabezados de C++: separación entre la interfaz y los detalles de implementación
// My.h
#include <3pheader.h>
class My
{
...
private:
3pObject m_object;
}
El problema con esto - cualquier otra unidad en mi programa que utiliza mi clase debe ser configurado para incluir encabezados 3p. Pasar a otro tipo de 3p pondrá en peligro toda la compilación ... Veo dos formas de arreglar esto: una es hacer 3pObject extern y convertir m_Object en un puntero, inicializándose en constructor; segundo es crear una "interfaz" y clases de "fábrica" y exportarlas ...
¿Podría sugerir otras formas de resolver eso?
Alguna razón para no usar boost :: scoped_ptr? – grigy
Nada específico - He estado acostumbrado a usar auto_ptr - probablemente es más apropiado en este caso usar scoped_ptr ya que no hay transferencia de propiedad –