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();
}
my_type の代わりに base を返すため、これはコンパイルされません。
私はただできることを知っています:
my_type build_my_type()
{
my_type ret;
ret.with_foo().with_bar();
return ret;
}
しかし、どうすれば実装できるかを考えていましたが、有効なアイデアが見つかりませんでした。何か提案はありますか?