Ich möchte, dass die Mutatoren (Setter) in meiner Klasse Folgendes zurückgeben this
um jQuery-ähnliches zu ermöglichen a.name("something").address("somethingelse");
Ich habe eine übergeordnete Klasse ( Entity
) und mehrere Unterklassen ( Client, Agent etc.
). Die Mutatoren für die meisten Dinge werden von der Entity
Klasse (wie Name oder Adresse), aber sie geben eine Entity
Objekt, so dass ich keine Client-Mutatoren für sie aufrufen kann.
Mit anderen Worten:
// 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;
}
dann, wenn ich sie anrufe:
Client a; a.name("UserName123").budgetRange(50);
Der Compiler sagt (logischerweise), dass das Entity-Objekt kein budgetRange-Mitglied hat (weil name ein Entity und keinen Client zurückgibt).
Meine Frage ist nun: Wie könnte ich so etwas umsetzen? Ich dachte daran, alle Entity-Funktionen in den Kindklassen zu überladen, aber das wäre nicht schön und würde der Idee der Vererbung widersprechen :)
Ich danke Ihnen im Voraus für Ihre Ideen :D