Me gustaría construir una clase base (abstracta) (llamémosla type::base
) con alguna funcionalidad común y una interfaz fluida, el problema al que me enfrento es el tipo de devolución de todos esos métodosInterfaces fluidas y herencia en C++
class base {
public:
base();
virtual ~base();
base& with_foo();
base& with_bar();
protected:
// whatever...
};
Ahora podría hacer subtipos, por ejemplo:
class my_type : public base {
public:
myType();
// more methods...
};
El problema viene cuando se utilizan esos subtipos como este:
my_type build_my_type()
{
return my_type().with_foo().with_bar();
}
Esto no se compilará porque estamos devolviendo base en lugar de my_type.
sé que acabo de poder:
my_type build_my_type()
{
my_type ret;
ret.with_foo().with_bar();
return ret;
}
Pero estaba pensando cómo puedo ponerlo en práctica, y no he encontrado ninguna ideas válidas, alguna sugerencia?
He eliminado las cosas del espacio de nombres porque no tiene nada (por lo que puedo ver) que ver con la pregunta –