将非模板类转换为模板

turning a non-template class into a template

本文关键字:转换      更新时间:2023-10-16

我有一个自制的数据结构(例如链表),它运行良好,但当我创建该类时,我是基于字符串来创建的,但现在我想使用该数据结构,并使用它来保存另一个自制数据类型。我知道这涉及到模板(采用工作数据结构并对其应用任何数据类型的能力),但我并没有真正使用过它们。

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

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

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

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

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

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

A<MyType> my_object;

这是的基本操作

  1. 将类的所有方法定义从.cpp移动到.h文件
  2. 将模板规范(template <class T>)放在所有声明和定义之前
  3. 将所有类名说明符更改为模板名称,即A::A(){}应变为A<T>::A(){}
  4. 如果需要,请将方法调用的名称更改为具有类型参数的名称
  5. 将以前类型的所有条目更改为类型参数名称

当然还有很多其他的事情。