2010-05-02 91 views
0

我用一個簡單的類有關模板的測試程序,這是我做的:問題關於C++模板

template <typename T> 
class test 
{ 
public: 
    test<T>::test(); 
    T out(); 
}; 

template <typename T> 
test<T>::test() 
{ 
} 

T test<T>::out() 
{ 
} 

int main() 
{ 
    //test<int> t; 
} 

但是,當我嘗試編譯它說「T」:未聲明的標識符使用類模板需要模板參數列表,指向同一行,我已經實現了方法out()。任何人都可以請解釋什麼問題?我正在使用visual studio 2008.

回答

0

您對out成員的定義缺少模板參數列表。出應改爲: -

template <typename T> 
T test<T>::out() 
{ 
} 
+0

OP沒有縮進代碼,所以''被視爲未知的HTML元素並被忽略。 – 2010-05-02 05:49:36

+0

哎呀 - 好點,雖然我認爲答案仍然正確 - 我剛剛得到了錯誤的缺少參數列表。 – Stewart 2010-05-02 05:55:00

+0

@Marcelo坎多斯 - 改變。感謝您的反饋 – Stewart 2010-05-02 05:57:29

0

此行是錯誤的:

test<T>::test(); 

就這樣寫:

test(); 
+0

這是錯誤的;那隻會定義一個新的自由函數而不是類方法。 – tzaman 2010-05-02 05:58:03

+0

我想我應該更清楚。我指的是課堂上的聲明,而不是後面的定義。 (分號應該給它。) – 2010-05-02 06:00:12

+0

哦,沒有看到。 - ( - 1):) – tzaman 2010-05-02 06:01:58

5

以下是更準確:

template <typename T> 
class test 
{ 
public: 
    test(); 
    T out(); 
}; 

template <typename T> 
test<T>::test() 
{ 
} 

template <typename T> 
T test<T>::out() 
{ 
} 

1)唐在課程內不使用<T> 2)不要忘記在每個方法聲明出來之前聲明模板<T>在主體外部