【发布时间】:2014-08-18 04:51:33
【问题描述】:
我已经定义了自己的类并将它们的对象存储在 std:list 中。现在我想收集所有元素,但出了点问题 - 我希望这不是太复杂以至于难以阅读:
std::map < long, FirstClass*> FirstClassMap;
std::map < long, FirstClass* >::iterator it;
it=this->FirstClassMap.begin()
//initialization of FirstClassMap is somewhere else and shouldn't matter.
list<SecondClass*>::iterator ListItem;
list<SecondClass*> depList = it->second->getSecondClassList();
for(ListItem = depList.begin(); ListItem != depList.end(); ++ListItem)
{
/* -- the error is in this Line -- */
FirstClass* theObject = ListItem->getTheListObject();
std::cout << theObject->Name();
}
然后是函数:
SecondClass::getTheListObject()
{
return this->theObject; //returns a FirstClass object
}
FirstClass::Name()
{
return this->name //returns a string
}
这里出现错误
方法“getTheListObject”无法解析
和
错误:元素请求 »getTheListObject« in »* ListItem.std::_List_iterator<_tp>::operator->()«,其 指针类型是 »SecondClass*«(可能是 »->« 的意思)
(对不起,我不能给你正确的错误信息。我必须把它从德语翻译成英语,我没有得到这些英文)
我真的没有看到问题所在。有人有想法吗?
亲切的问候
【问题讨论】:
-
@πάνταῥεῖ 不,这与外部符号错误无关
-
试试
FirstClass* theObject = (*ListItem)->getTheListObject();,你必须取消对迭代器的引用,才能访问列表元素。 -
谢谢我尝试了很多 * 的组合,总是小错误;)谢谢
标签: c++ list pointers map iterator