我想让我的类中的变异器(设置器)返回this
以允许像 jQuery 一样a.name("something").address("somethingelse");
我有一个父类(Entity
)和几个子类( Client, Agent etc.
)。大多数事物的修改器是从Entity
类继承的(如名称或地址),但它们返回一个Entity
对象,所以我不能在它们上调用客户端修改器。
换句话说:
// 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;
}
然后当我调用它时:
Client a; a.name("UserName123").budgetRange(50);
编译器(逻辑上)说,Entity 对象没有budgetRange 成员(因为name 返回的是Entity,而不是Client)。
我现在的问题是:我怎么能实现这样的东西?我考虑过重载子类中的所有实体函数,但这不会很好,而且会违背继承的想法:)
提前感谢您的想法:D