我正在编写自己的hash_table实现(只是为了好玩)。我想实现一系列哈希例程,并让用户有机会选择一个带有ID的哈希例程。为此,我想使用一个可生产合适垫圈的工厂。哈希是类模板。是否可以为产品模板编写工厂而不使用类似列表之类的任何内容来指定提供的每种可能类型?我最担心的是产品注册。
更一般。我的产品是:
template <typename X>
class i_prod
{
};
template <typename X>
class c_prod_a : public i_prod {
};
template <typename X>
class c_prod_b : public i_prod {
};
工厂也是一个类模板。但是如何整理注册流程呢?
答案 0 :(得分:0)
是的,使用特征class
template
,其ID为template
参数。要注册一个id,你需要专门化traits类,这可以分配完成。您可以使用enum
或ID的整数类型,但这会使碰撞难以避免。
相反,您可以使用仅作为标识符的标记struct
,例如迭代器标记。
这一切都可以在编译时解决。