2010-05-10 41 views
0

如果我有一個如下所示的模板定義,有人可以提供一個代碼示例,我將如何實際使用兩個自己的類來實例化這個實例?C++模板的使用

template <class T1, class T2> 
class LookUpTable { 
public: 
    LookUpTable(); 
    void set(T1 x, T2* y); 
    T2* get(T1 x); 
}; 

謝謝。

回答

5

除非您提供構造函數的定義,否則不能實例化它。除非您提供其他兩個功能的定義,否則您將無法使用它。如果你沒有提供給他們,你會實例化它是這樣的:

LookUpTable <std::string, int> t; 

,或者如果你有自己的類A和B:

LookUpTable <A, B> t; 

它看起來這是圖的某種,在這種情況下,你不妨使用std ::地圖:

#include <map> 
#include <string> 

std::map <std::string, int> m; 
+1

這就是我認爲......我不確定的事情是無參數的構造函數定義(和類名稱)不包含任何類型參數,我來自C#背景。推測構造函數的實現看起來像'LookUpTable(){* initialise internals *}'? – MalcomTucker 2010-05-10 09:13:20

+1

@Malcolm是的,儘管您可能還想調查構造函數初始化列表。正如我所建議的,如果這不是學習練習,請使用std :: map。 – 2010-05-10 09:15:37

+1

這是一個學習練習,感謝您的幫助:) – MalcomTucker 2010-05-10 09:24:28

2

1),因爲這是一個模板類, 確保你的構造和功能 在012聲明標題。

2)實例化這樣的:

LookUpTable <YourClass1, YourClass2> table; 

3)注意:您 有一個錯字,鉈,而不是T1。在一些 字體l看起來幾乎是1.