2013-08-22 242 views
3

我想定義一個模板類的特化,其中包含一個非類型模板參數成員函數。我得到以下錯誤:模板類與非類型模板參數成員函數

error: too few template-parameter-lists 

Here's a sample class that describes the problem in brief, 
// file.h 
template <typename T> 
class ClassA { 
    T Setup(); 
    template <int K> static void Execute(); 
}; 

//file.cc 
void ClassA<int>::Execute<2>() { //Do stuff } 

我相信這是比設計問題更多的語法問題,任何線索?由於

回答

5

即使你完全專注模板,你仍然需要template<>

template<> template<> void ClassA<int>::Execute<2>() { //Do stuff } 
+0

那麼,拋出錯誤 錯誤:template-id'Execute <2>'for'void ClassA :: Execute()'與任何模板聲明不匹配 – blueskin

+0

這是因爲它需要說'template <>'兩次(onc e爲班級,一次爲功能),如我的答案中所述。 –

+0

哎呀,錯過了函數模板。謝謝你,@ MarkB –

4

你忘了告訴你的專業模板類的模板方法編譯:

template <> 
template <> 
void ClassA<int>::Execute<2>() 
{ 
    //Do stuff 
}