2011-09-24 121 views
2

我想弄明白,所以我有專業類模板的這種嘗試:局部類模板專業化,C++

template <class T, int size> class arr{ 
public: 
    arr(T* in):_in(in){}; 
    void print() 
    { 
     for (int i = 0; i < size; i++) 
     { 
      cout << _in[i]; 
     } 
     cout << endl; 
    } 
private: 
    T* _in; 
}; 

我想爲arr<char>創建一個特殊的模板。在我添加int size作爲類型參數之前,它很容易,並且類聲明是template<> class arr<double>

現在我有這個template <> class arr<double,size>導致這個錯誤:

template argument 2 is invalid 

的怎麼辦呢任何想法?謝謝!

+0

發佈代碼部分專業化。 – Nawaz

回答

4
template <int size> class arr<char, size> 

此外,可能要爲大小的類型改變爲unsigned intsize_t(假設大小不能爲負值)。

0

您需要將int size添加到第一個列表中,即編譯器沒有size的源代碼 - 您沒有將其聲明爲模板參數,也不是常量。

template<int size> class arr<double, size> { ... }