2012-02-20 204 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