2011-11-24 59 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的位置。谢谢! –