0

我正在编写自己的 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 {

};

工厂也是一个类模板。但是如何理清注册流程呢?

4

1 回答 1

0

是的,使用class template带有 id 作为template参数的特征。要注册一个 id,您需要专门化特征类,这可以分布式完成。您可以enum为 id 使用或整数类型,但这使得冲突难以避免。

相反,您可以使用struct仅充当标识符的 tag ,例如迭代器标签。

这都可以在编译时解决。

于 2013-06-01T00:08:34.947 回答