带有一个和两个模板参数的模板类

时间:2015-05-20 10:40:01

标签: c++ class c++11

我正在尝试创建一个使用模板的类的实例,但有两个可能的实例化。

我有一个类SepChaining的定义,带有一个模板参数E

template <typename E>
class Container {
  ...
}

这是我的头文件。

template <typename E>
class SepChaining : public Container<E> {
  ...

在我的main.cpp中,我可以选择

SepChaining<int>* c = nullptr;

c = new SepChaining<int>;

c = new SepChaining<int, 13>;

当然我收到第二个语句的错误,告诉我有太多的模板参数,但我也需要一种方法来实现该选项,以创建具有2个参数的类的实例。我已经阅读了部分模板专业化,但我不确定如何实现它。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以像这样定义模板

template <typename E, size_t S = 7>
class SepChaining : public Container<E> {
    ...
}

然后你可以按照你的建议实例化它

// use default value for S that is 7
c1 = new SepChaining<ElementType>;

// specify S = SIZE explicitly
c2 = new SepChaining<ElementType, SIZE>;
除非SIZE为7

,否则原因c1和c2将具有不同的类型