我有一些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 作为一种“模板变量”,以便存储用户定义的模板变量吗?
为了提供更多上下文,Builder
必须支持从 json 配置文件创建相当复杂Object
的文件,将每个键及其验证委托给单个方法。我有一个静态命名构造函数Builder::from_config(...)
和一个Builder::load_config(...)
为我做这件事的方法,但我想支持从配置文件中选择策略对象。否则,我只需将模板添加到Builder::init()
方法中就可以了,这样我就可以将我的策略对象传递给Object
.