Tengo una pregunta sobre el siguiente código:Destructor virtual para boost: clases no procesables?
class MyClass : private boost::noncopyable
{
public:
MyClass() {}
virtual ~MyClass() {}
}
class OtherClass : private boost::noncopyable
{
private:
MyClass* m_pMyClass;
}
Mis pensamientos son que MiClase no se pueden copiar utilizando la construcción o asignación. Es necesario utilizar un destructor virtual si deseo admitir clases derivadas de MyClass, que no quiero admitir. No tengo la intención de crear punteros a esta clase y pasarlos.
No quiero un Singleton y no puedo ver un inconveniente para eliminar el destructor virtual.
¿Introduzco un problema potencial si elimino el destructor virtual para una clase no copiable? ¿Hay mejores prácticas para manejar una clase que no necesita ser Singleton, pero solo quiero una instancia en otra clase y no soporte la herencia?
Si no desea apoyar la herencia, considere hacer el constructor privado y tienen una estática crear-función en su lugar. – Macke
Marcus: aunque eso requiere otras cosas que no quiere admitir, como copiar o pasar punteros (la fábrica debe devolver el valor o devolver un puntero). –