【发布时间】:2014-02-21 06:15:05
【问题描述】:
我正在尝试做的事情:
编写上一个练习中的模板的专门版本来处理
vector<const char*>和一个程序 使用这个专业化。
我是这样写程序的:
template<typename T>
int count(vector<T> tvec, const T &t);
template<>
int count(vector<const char *> tvec, const char *const &s)
{
int count = 0;
for (auto c : tvec)
if (c == s) {
++count;
}
return count;
}
template<typename T>
int count(vector<T> tvec, const T &t)
{
int count = 0;
for (auto c : tvec)
if (c == t) {
++count;
}
return count;
}
cout << count(svec, "GUO");
但我收到错误提示
deduced conflicting types for parameter ‘const T’ (‘std::basic_string<char>’ and ‘char [4]’)
我想知道如何处理这个问题。再进一步,在模板函数中,似乎可以将数组更改为指针,为什么我的程序无法处理?
【问题讨论】:
-
顺便说一句。通过运算符 == 比较原始字符串只会比较指针。请改用
strcmp()。