Also habe ich eine Klasse namens Song und eine andere Klasse namens SongLibrary. Die Songbibliothek enthält nur einen Satz aller Songs und Methoden.C++ find_if Elementvariable einer anderen Klasse
Ich versuche gerade, eine Funktion zum Durchsuchen der Song-Bibliothek und prüfen, ob ein Lied einen bestimmten Titel hat.
Das Problem, das ich habe, ist, dass der Liedtitel von der songlibrary Klasse nicht zugänglich ist.
m_songs ist der Name des Sets, das ich in der songlibrary verwende, um alle Songs zu speichern.
m_title ist die Membervariable für den Titel in Song.cpp
in SongLibrary.cpp
bool SongLibrary::SearchSong(string title)
{
bool found = false;
std::find_if(begin(m_songs), end(m_songs),
[&](Song const& p)
{
if (p.m_title == title) // error here (m_title is inaccessible)
{
found = true;
}
});
return found;
}
habe ich versucht, die Methode ein Freund der Song-Klasse zu machen, aber ich bin nicht genau Sicher verstehe ich, wie es funktioniert.
EDIT I Das Problem wurde behoben folgendes
bool SongLibrary::SearchSong(string title)
{
if (find_if(begin(m_songs), end(m_songs),[&](Song const& p)
{return p.getTitle() == title;}) != end(m_songs))
{
return true;
}
return false;
}
Make 'SongLibrary' einen Freund von' Song' . Oder noch besser, machen Sie 'm_title' öffentlich. –
Warum hat deine 'Song' Klasse keinen' öffentlichen' Weg den Titel zu bekommen? – nwp
weil ich ein Idiot bin –