2012-02-20 126 views
0

我有一个自制的数据结构(例如链接列表),但是当我创建该类时,我是基于字符串创建的,但现在我想要获取该数据结构,并用它来保存另一个自制的数据类型。我知道这涉及到模板(能够采用工作数据结构并将任何数据类型应用于它),但我没有真正与它们合作。将非模板类转换为模板

我应该遵循什么步骤将非模板类变成模板类?

回答

2

你需要做的就是把模板规范在前面的主要事情:

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

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

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

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

A<MyType> my_object; 
+0

那么直接跟随的问题是如何指定我使用的是新类型,并且是否需要包含保存我在现在模板类中使用的类型的文件 – gardian06 2012-02-20 03:43:12

+1

我添加了一些细节以我的答案。在声明模板类时,不需要声明类型,因为模板类不知道类型T是什么。当你实例化类时,类型将需要被声明。 – 2012-02-20 03:48:53

+0

谢谢。使用这个模板的原因是我可以保存唯一的数据类型,并且不必每次都要重写结构(我认为这是模板的参数之一,并不确定)。更不用说它将通过使其适用于新的类型 – gardian06 2012-02-20 03:52:56

2

是基本动作

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

的所有条目调用者可以有很多其他的事情当然。

+0

我认为这可以独立完成分离存根和实现(只是做到了)。所以step1实际上是不相关的(更完美的世界类的东西),step2依赖于step1,但3-5在所有方面仍然相关。你可能想检查步骤4的措辞。 – gardian06 2012-02-20 04:19:14