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

我对类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个参数的类的实例。我已经阅读了部分模板特化知识,但是我不确定如何实现它。

任何帮助,将不胜感激!

最佳答案

您可以这样定义模板

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>;

原因c1和c2的类型将不同,除非SIZE为7

10-08 13:44