我有这个:
Item findItem(std::string name)
{
for(std::list<Item*>::iterator it = listItem.begin(); it != listItem.end(); it++)
{
if((*it)->name() == name){
return ___;
}
}
}
如何正确返回元素?
答案 0 :(得分:4)
it
是迭代器*it
是Item*
,是it
目前所指的容器的元素**it
是您可能希望返回的实际Item
如果找不到该元素,请不要忘记抛出异常或其他内容!到达返回除void
之外的其他内容的函数的末尾,而不返回void
之外的其他内容,将程序用未定义的行为填充(除非函数为main
,在这种情况下return 0
假设1}}。
另外,请考虑一下是否需要/想要存储指针;考虑使用std::list<Item>
。如果您坚持使用指针,请检查以确保正确管理其生命周期。当您发现自己没有时,请切换到智能指针。然后再考虑一下确实是否需要/想要存储指针。
答案 1 :(得分:2)
return **it;
正是您要找的。 p>