このコードでは、データベースを検索してmemberNumberを検索する関数がブール値を返す実際の検索関数を呼び出すように(プログラムをモジュール化する)値。ブール値を返そうとしたときにプログラムがクラッシュする
今のところ、私はすでにsearchID関数がを返すときにプログラムがクラッシュするという問題に遭遇しています。 falseを返すとクラッシュしません。
オリジナルワーキング機能:
bool DonorList::searchID(int memberNumber) const
{
bool found = false;
list<DonorType>::const_iterator iter = donors->begin();
while (iter != donors->end() && !found)
{
if (iter->getMembershipNo() == memberNumber)
{
found = true;
}
else
++iter;
}
return found;
}
変更機能:
bool DonorList::searchID(int memberNumber) const
{
list<DonorType>::const_iterator iter;
bool found = searchDonorLocation(memberNumber, iter);
return found;
}
追加機能:私はプログラムがクラッシュそれ以外の問題を引き起こしているもの見当もつかない
bool DonorList::searchDonorLocation(int memberNumber, list<DonorType>::const_iterator &iter) const
{
iter = donors->begin();
bool found = false;
while (iter != donors->end())
{
if (iter->getMembershipNo() == memberNumber)
{
found = true;
}
else
iter++;
}
return found;
}
新しく変更された関数がtrueを返すと仮定します。私はsearchDonorLocation(memberNumber、iter)を返そうとしましたが、まったく同じクラッシュが発生します。
「found」は宣言されていますか? [mcve] – user463035818
を入力してください。元の関数のタイプミスです。それを指摘してくれてありがとうございます。ブールは宣言された偽を見つけました(もしそれができなければ、確かにうまくいかなかったでしょう)。それを含む投稿を編集しました。 – BaloneyOs
memberNumberが見つかった場合。あなたはイテレータをインクリメントしていません、無限ループに入っています。あなたはただ真を返すべきです。またはループを中断する。 – user1438832