C++ 如何在C++;?
我已经定义了自己的类,并将它们的对象存储在一个std:列表中。现在我想学习所有元素,但出现了一些问题-我希望这不是太复杂,无法阅读:C++ 如何在C++;?,c++,list,pointers,map,iterator,C++,List,Pointers,Map,Iterator,我已经定义了自己的类,并将它们的对象存储在一个std:列表中。现在我想学习所有元素,但出现了一些问题-我希望这不是太复杂,无法阅读: std::map < long, FirstClass*> FirstClassMap; std::map < long, FirstClass* >::iterator it; it=this->FirstClassMap.begin() //initialization of FirstClassMap is somewhere
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();
}
这里我得到了错误
无法解析方法“getTheListObject”
及
错误:元素请求»getTheListObject«in»*
std::_List_迭代器::运算符->()«,其
指针类型为»SecondClass*«(可能是»->«的意思)
(很抱歉,我不能给你正确的错误信息。我必须把它从德语翻译成英语,我没有这些英语)
我真的看不出有什么问题。有人有主意吗
在您的代码中,
ListItem
不是SecondClass*
的实例,它是SecondClass*
的迭代器的实例。必须取消对迭代器的引用才能访问底层对象。因此,for循环应该如下所示:
for(ListItem = depList.begin(); ListItem != depList.end(); ++ListItem)
{
FirstClass* theObject = (*ListItem)->getTheListObject(); //Dereference the iterator,
//then call the method.
std::cout << theObject->Name();
}
for(ListItem=depList.begin();ListItem!=depList.end();++ListItem)
{
FirstClass*theObject=(*ListItem)->getTheListObject();//取消对迭代器的引用,
//然后调用该方法。
std::cout Name();
}
可能重复的@πάνταῥεῖ 不,这与外部符号错误无关tryFirstClass*theObject=(*ListItem)->getTheListObject()代码>,您必须取消对迭代器的引用,才能访问列表元素。这要感谢我尝试了*的许多组合,总是小错误;)非常感谢。
for(ListItem = depList.begin(); ListItem != depList.end(); ++ListItem)
{
FirstClass* theObject = (*ListItem)->getTheListObject(); //Dereference the iterator,
//then call the method.
std::cout << theObject->Name();
}