模板类的特化成员 - 不匹配 - 数组
我有一个实现函数的模板类:
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*
I have a template class which implements function:
template<typename T>
class Matrix
{
...
void setItems(const T *tab)
{
//writing content from tab to Matrix internal data
}
...
};
Everything's fine until I want to create specialized function for char*, my class must allocate memory for string and so on. I wanted to use:
template<> void Matrix<char*>::setItems(const char** tab)
{
...
The problem is, this does not build:
template-id 'setItems<>' for 'void Matrix<char*>::setItems(const char**)' does not match any template declaration
I had no problem with specialized functions until now. What am I missing?
Additional info:
I must use char*
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果 T 是 char *,则 const T * 是 char *const *。
所以你的成员函数应该是:
将 const 放在类型后面是相当常见的
,这使得你的情况下的扩展类型更加明显。
If T is a char *, then const T * is a char *const *.
So your member function should be:
It is fairly common to put the const after the type
which makes it a little more obvious what the expanded type is in your case.