Builder
を構築するクラスがありますObject
。の内臓の一部をポリシー オブジェクトに置き換える計画がありObject
ます。たとえば、いくつかのコンテナ タイプを設定できるようにしStorage
ます。具体的には、 を使用して のBuilder
ポリシー オブジェクトを設定しObject
、何も指定されていない場合はデフォルトにフォールバックします。私の頭の上から、次のようなもの:
class Builder {
public
Builder();
// ... builder methods
template<typename S>
Builder& storage() { Storage = S; }
Object init() { return Object<Storage>(...); }
private:
typedef std::vector Storage;
}
template<typename Storage>
class Object { ... }
Object o = Builder()
.storage<std::list>()
.init()
問題の要点は、typedef を一種の「テンプレート変数」として使用して、ユーザー定義のテンプレート変数を格納できるかどうかです。
より多くのコンテキストを提供するために、json 構成ファイルからBuilder
のかなり複雑な作成をサポートし、Object
各キーとその検証を個々のメソッドに委譲する必要があります。静的な名前付きコンストラクターBuilder::from_config(...)
とそれを行うメソッドがありますが、構成Builder::load_config(...)
ファイルからのポリシー オブジェクトの選択をサポートしたいと考えています。それ以外の場合は、メソッドにテンプレートを追加するだけで問題ないBuilder::init()
ので、ポリシー オブジェクトを に渡すことができますObject
。