Para ser honesto, no se sabe muy bien, cómo hacer esta pregunta, así que por favor no seas loco :)C++ en función de los padres del niño de retorno
De todos modos, quiero tener las mutators (set) en mi clase para devolver this
para permitir jQuery-like a.name("something").address("somethingelse");
Tengo una clase para padres (Entity
) y varios childclasses (Client, Agent etc.
). Los mutadores de la mayoría de las cosas se heredan de la clase Entity
(como el nombre o la dirección), pero devuelven un objeto Entity
, por lo que no puedo llamar mutantes Client en ellos.
En otras palabras:
// name mutator
Entity& Entity::name(const string& name) {
// [...] checks
_name = name;
return *this;
}
// budgetRange mutator
Client& Client::budgetRange(const long int& range) {
// [...] checks
_budgetRange = range;
return *this;
}
luego, cuando lo llamo:
Client a; a.name("Dorota Adamczyk").budgetRange(50);
El compilador (lógicamente) dice que el objeto Entidad tiene ningún miembro budgetRange (porque el nombre devuelve una entidad, no es un cliente).
Mi pregunta ahora es: ¿cómo podría implementar algo como esto? Pensé en la sobrecarga de todas las funciones de entidad en el childclasses pero eso no estaría bien y estaría en contra de la idea de la herencia :)
Gracias de antemano por sus ideas: D
google también para 'method chaining' y' named parameter idiom', que es lo que estás haciendo.Tenga en cuenta que, al heredar de 'Cliente' su código se romperá de nuevo utilizando la solución CRTP a continuación. – cheind