Estoy intentando bloquear el acceso al constructor predeterminado de una clase que estoy escribiendo. El constructor que quiero que otros utilicen requiere una referencia constante a otro objeto. He hecho que el constructor predeterminado sea privado para evitar que otros lo usen. Obtengo un error de compilación para el constructor predeterminado porque la variable miembro de referencia const no se inicializa correctamente. ¿Qué puedo hacer para hacer esta compilación?la referencia de const se debe inicializar en la lista de base de constructor/miembro inicializador
class CFoo
{
public:
CFoo();
~CFoo();
};
class CBar
{
public:
CBar(const CFoo& foo) : fooReference(foo)
{
}
~CBar();
private:
const CFoo& fooReference;
CBar() // I am getting a compiler error because I don't know what to do with fooReference here...
{
}
};
Gracias por la ayuda. Por alguna razón, pensé que el compilador generaba un constructor predeterminado incluso si no escribía uno. –
@Trevor Sí lo hace, siempre que no declare explícitamente un constructor (de cualquier tipo) en su definición de clase. –
@Trevor Es posible que también deba bloquear el constructor de copia. – rwong