2011-11-24 23 views
1

我有一個實現功能的模板類:專業成員 - 不匹配 - 數組

template<typename T> 
class Matrix 
{ 
... 
void setItems(const T *tab) 
{ 
    //writing content from tab to Matrix internal data 
} 
... 
}; 

一切都很好,直到我要創建的char *專業化的功能,我的課必須爲字符串分配內存和等等。我想用:

template<> void Matrix<char*>::setItems(const char** tab) 
{ 
... 

的問題是,這並不編譯:

template-id 'setItems<>' for 'void Matrix<char*>::setItems(const char**)' does not match any template declaration 

我有專門的功能沒有問題,到現在爲止。我錯過了什麼?

附加信息:
我必須使用char*

回答

2

如果T是一個char *,然後常量T *是一個char * const的*。

所以,你的成員函數應該是:

template<> void Matrix<char*>::setItems(char*const* tab) 
{ 
    ... 
} 

這是相當普遍把常量的類型後

void setItems(T const* tab) 

這使得它多一點明顯擴大的類型是你的案件。

+0

這解決了我的問題。我會記住const的位置。謝謝! –