将非模板类转换为模板

时间:2012-02-20 03:25:13

标签: c++ templates

我有一个自制的数据结构(例如链接列表),但是当我创建类时我是基于字符串做的,但是现在我想采用那个数据结构,并用它来保持另一个自我制作数据类型。我知道这涉及模板(能够采用工作数据结构并将任何数据类型应用于它),但我还没有真正使用它们。

我应该遵循哪些步骤将非模板类转换为模板类?

2 个答案:

答案 0 :(得分:2)

您需要做的主要是将模板规范放在前面:

template <class T>
class A {
  ...
};

然后使用T而不是使用您的字符串类型。

创建模板时还有许多其他事项要考虑,但这取决于具体情况。

使用模板时,您将指定新类型:

A<MyType> my_object;

答案 1 :(得分:2)

这是基本行动

  1. 将班级的所有方法定义从.cpp移至.h文件
  2. 在所有声明和定义之前放置模板规范(template <class T>
  3. 将所有类名称说明符更改为模板名称,即A::A(){}应变为A<T>::A(){}
  4. 如果需要,请将方法调用的名称更改为类型参数
  5. 的名称
  6. 将前一类型的所有条目更改为类型参数名称
  7. 当然可以是很多其他的东西。