c++ - 具有一个和两个模板参数的模板类

标签 c++ class c++11

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

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

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

除非 SIZE 为 7,否则 c1 和 c2 将具有不同的类型

关于c++ - 具有一个和两个模板参数的模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347246/

相关文章:

c++ - 如何为模板类实现 std::hash

c++ - 在成员函数中访问参数的类成员

c++ - Linux 打印 - 操作方法

c++ - C++中的Ofstream数组

c++ - Boost线程 - 超出范围的可能性

javascript - 更改单独元素中的 javascript 变量

php - 我的 str_replace 代码不起作用

c++ - msvc 11 仅在某些情况下尊重 C++ 外部模板

C++:转发参数包和 std::tuple/array 的总和

C++ 复古新手 : address references