Я хотел бы использовать функцию, которая не является статической, в качестве предиката.К сожалению, я получаю сообщение об ошибке, что оно нестатично, и я не знаю, как к этому подойти.
Ошибка :
ошибка: вызов нестатической функции-члена без аргумента объекта songs_.remove_if (Song :: operator () (s));
Вот нестатическая функция, которую я использую в сочетании с remove_if:
bool Song::operator()(const Song& s) const
{
SongCallback();
string thisArtist = Song::artist_;
string thisTitle = Song::title_;
// check if songs match title AND artists
if(Song::operator==(s))
{
return true;
// wild card artist or title
}
else if(thisArtist == "" || thisTitle == "")
{
return true;
// either artist or title match for both songs
// }
// else if(thisArtist == s.GetArtist() or thisTitle == s.GetTitle()){
// return true;
// no matches
}
else
{
return false;
}
}
, а в другой функции я пытаюсь вызвать remove_if, используя эту функциюкак предикат, например, так:
Song s = Song(title,artist);
songs_.remove_if(s.operator()(s) );
Итак, мой вопрос: как мне правильно вызвать этот оператор, чтобы он не жаловался на то, что это нестатическая функция?Я где-то читал об указателе на экземпляр класса, но это самое близкое, что я мог найти.