2013-04-09 163 views
2

我在我的一個類中使用模板,但由於某種原因,當我創建一個對象時,我得到的錯誤如下:類模板「測試」的參數列表丟失。無法創建類模板對象

template <class T> 
class Test 
{ 
private: 
    T variable; 

public: 
    Test(){cout << "CONSTRUCTOR CALLED" << endl;} 
}; 
在main.cpp中

Test object; 

編譯

顯示以下內容: '測試':使用類模板需要模板參數列表。

template <class T> 
Test<T>::Test() 
{ 
    cout << "CONSTRUCTOR CALLED" << endl; 
} 

這也沒有工作

+0

如果您的類使用模板,則應該爲其提供模板參數(或參數)當你嘗試使用它時(例如'Test object;') – Nbr44 2013-04-09 01:35:36

+0

你需要使用類型來對它進行參數化,比如'Test object'。 – Yuushi 2013-04-09 01:36:17

回答

0

你必須指定要實例化一個class template類型。 例如:

Test<int> object; 

想想你如何使用類模板從std libraryvectors, 你必須指定類型,如int,例如vector<int>。這與此相同。

對於構造函數定義,它應該工作,但是,有一點是你必須把聲明和定義放在同一個頭文件中,否則編譯器找不到定義。 (有些技術可以將不同文件中的聲明和定義分開,例如頭文件末尾的「導出」和「#include cpp文件」)