我希望创建一个基类(称之为type::base
),它具有一些常见的功能和流畅的接口,但问题是所有这些方法的返回类型。
class base {
public:
base();
virtual ~base();
base& with_foo();
base& with_bar();
protected:
// whatever...
};
现在我可以创建子类型,例如:
class my_type : public base {
public:
myType();
// more methods...
};
问题出现在使用这些子类型时,例如:
my_type build_my_type()
{
return my_type().with_foo().with_bar();
}
这段代码不能编译,因为我们返回了base而不是my_type。
我知道我可以这样做:
my_type build_my_type()
{
my_type ret;
ret.with_foo().with_bar();
return ret;
}
但我在思考如何实现它,却没有找到任何有效的想法,有什么建议吗?