私はObject
を構築するクラスBuilder
をいくつか持っています。私はObject
の中身の一部をポリシーオブジェクトに置き換える計画があります。たとえば、いくつかのコンテナタイプStorage
を設定することができます。具体的には、Builder
を使用して、Object
のポリシーオブジェクトを設定したい場合は、何らかのデフォルトに戻すことをお勧めします。私の頭の上から、そのような何か:C++ポリシーオブジェクトとビルダーパターン
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を使用することができますか?
コンテキストをさらに提供するために、Builder
は、json設定ファイルからかなり複雑なObject
を作成し、各キーとその検証を個々のメソッドに委譲することをサポートする必要があります。私は静的な名前のコンストラクタBuilder::from_config(...)
と私のためにそれを行う方法Builder::load_config(...)
がありますが、私は設定ファイルからポリシーオブジェクトを選ぶことをサポートしたいと思います。それ以外の場合は、Builder::init()
メソッドにテンプレートを追加するだけで問題なく、ポリシーオブジェクトをObject
に渡すことができます。
感謝あなたは非常に!これは本質的に私の質問に答えます。私はjson設定ファイルから善意を選ぶ能力が必要です。言い換えれば、文字列の値に基づいて別のパラメータを指定する必要がありますが、 'Builder'の' load_config'メソッドでそれをやりたいのです。 – gwelof