我得到的错误:
没有用于调用'SimpleRecommender :: getMovieId(std :: string&)'的匹配函数
我的头文件中写了什么(没有我的其他功能):
class MyClass
{
template<class Iterator>
int getId(string Name);
};
我的.cc文件中写了什么:
template<class Iterator>
double Recommender::generatePrediction(int userid, string Name){
int movieId=Recommender::getId(Name);
double avg=0;
for(Iterator current=ratings.begin();current!=ratings.end();current++){
if((*current).movieId==movieId){
avg+=(*current).rating;
avg/=2.0;
}
}
return avg;
}
template<class Iterator>
int Recommender::getMovieId(string movieName){
for(Iterator current=movies.begin();current!=movies.end();current++){
if((*current).getName().compare(movieName)==0)
return (*current).getId;
else{
cout<<"ERROR: movie not found"<<endl;
exit();
}
}
};
注意:评级是矢量
什么会导致此错误?
答案 0 :(得分:0)
不应该有参考运算符:
int Recommender::getMovieId(string movieName)
像这样?:
int Recommender::getMovieId(string &movieName)
如何从代码中调用该函数?
此外,如果您不更改函数内的值,则可以考虑使用const string &
代替string
或string &
。