ошибка при использовании метода из класса по второму параметру map в c ++ - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть карта со строкой (Пользователь) и список книг для каждого пользователя

std::map<std::string,std::list<Book>> app;
 app.insert(std::make_pair(Friend1,borrowedBooks));
app.insert(std::make_pair(Friend2,bookFr));

В классе Book у меня есть атрибут с именем BookRating

class Book{
private :

    int bookRating_;
public:
    int getRating(){ return bookRating_;}

И я я пытаюсь отобразить все книги (от каждого пользователя), которые имеют 5-звездочный рейтинг, и я сделал это

auto it=app.begin();
    while(it != app.end()){
        if((it->second).getRating()==5){
            print(app);
        }
        it++;
    }

Где печатать веселье c выглядит так:

void print(std::map<std::string,std::list<Book>> m){
    for(auto it=m.begin();it!=m.end();++it){
        std::cout<<"["<<it->first<<","  <<it->second<<"]"<<std::endl;
    }
}

У меня ошибка, которая звучит так:

 error: 'class std::__cxx11::list<Book>' has no member named 'getRating'
         if((it->second).getRating()==5){
                         ^

Так что проблема с getRating, и я не знаю почему, поэтому я надеюсь, что вы можете мне помочь:)

1 Ответ

0 голосов
/ 28 апреля 2020

it -> second - это список книг, а не книга. Вы должны перебрать it -> second и получить рейтинг каждой книги самостоятельно.

...