私はSongと呼ばれるクラスと呼ばれ、別のクラスはSongLibraryと呼ばれています。 Songlibraryには、すべての曲と適切な方法のセットが含まれています。C++ find_if別のクラスのメンバー変数
現在、曲ライブラリを検索して曲に特定のタイトルが付いているかどうかを確認する機能を作っています。
私が抱えている問題は、曲名がsonglibraryクラスからアクセスできないということです。
m_songsは、すべての曲を保存するためにsonglibraryで使用しているセットの名前です。
m_titleは、私が法に歌のクラスの友人を作ることを試みてきたが、私は正確ではないよ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;
}
にSong.cpp
にタイトルのメンバ変数であります確かに私はそれがどのように機能するのか理解している
EDIT は、私はあなたの友人のクラスを使用したい場合は、SongLibrary
Song
の友人を作る必要があり、次の
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;
}
メイクを'「ゲッター」機能を追加します。しかし、私はあなたがこのようなあなたのソングタイトルのための公共ゲッターが作る示唆します。それとも 'm_title'を公開する方が良いでしょうか。 –
あなたの 'Song'クラスはなぜタイトルを取得するための' public'方法を持っていませんか? – nwp
私はばかだから –