C ++可以找到错误

时间:2012-03-22 19:58:41

标签: c++ class

我得到的错误:

没有用于调用'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();
                    }
            }
    };

注意:评级是矢量

什么会导致此错误?

1 个答案:

答案 0 :(得分:0)

不应该有参考运算符:

 int Recommender::getMovieId(string movieName)
像这样?:

int Recommender::getMovieId(string &movieName)

如何从代码中调用该函数?

此外,如果您不更改函数内的值,则可以考虑使用const string &代替stringstring &