我有以下功能:
ItemSet* Library::itemsForKeyword(const string& keyword)
{
ItemSet temp;
for(it=bookList.begin();it!=bookList.end();it++){
if(it->getPtr()->findKeyWord(it->getPtr()->keywordsList, keyword))
temp.insert(*it);
}
ItemSet* temp2 = &temp;
return temp2;
}
ItemSet 是一个包含 ItemPtr 实例的集合,其中包含指向派生类实例的指针。'it' 是Library 中定义的迭代器,findKeyWord 是一个将keywordsList 与关键字进行比较以确定该关键字是否在该列表中的函数。如果它返回 true,那么我取消对迭代器的引用,并将它当前正在迭代的实例添加到 temp。我的问题是,当循环完成时,我返回 temp2,但它返回空,并在我的打印函数打印它时导致错误。为什么返回是空的?谢谢。