¿Qué tipo de trucos se puede utilizar para reducir al mínimo la carga de trabajo de la aplicación de las clases pImpl?Ejecución pImpl con una cantidad mínima de código
Cabecera:
class Foo {
struct Impl;
boost::scoped_ptr<Impl> self;
public:
Foo(int arg);
~Foo();
// Public member functions go here
};
Implementación:
struct Foo::Impl {
Impl(int arg): something(arg) {}
// All data members and private functions go here
};
Foo::Foo(int arg): self(new Impl(arg)) {}
Foo::~Foo() {}
// Foo's public functions go here (and they refer to data as self->something)
¿Cómo mejoraría esto, el uso de Boost, posiblemente herencia, CRTP u otros trucos para evitar en la medida código repetitivo como es posible? El rendimiento del tiempo de ejecución no es un problema.
realidad, que no implementa el lenguaje pimpl ya sea porque no se haya solucionado el constructor de copia y la asignación copia ' operador = 'en Foo. –
No suelo necesitar copyability (y scoped_ptr proporciona de forma predeterminada noncopyability), pero usted tiene un punto, la creación de esas funciones también podría automatizarse. – Tronic