c++ - 如何获取存储在 C++ 列表中的类对象?

标签 c++ list pointers dictionary iterator

我定义了自己的类并将它们的对象存储在 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
}

这里我得到了错误

Method 'getTheListObject' could not be resolved

Error:element request »getTheListObject« in »* ListItem.std::_List_iterator<_Tp>::operator->()«, whose pointer type is »SecondClass*« (maybe »->« was meant)

(对不起,我不能给你正确的错误信息。我必须把它从德文翻译成英文,我没有英文)

我真的看不出问题所在。有人有想法吗?

亲切的问候

最佳答案

在您的代码中,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();
}

关于c++ - 如何获取存储在 C++ 列表中的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445703/

相关文章:

c - 指针基地址的不同分配

c++ - 乒乓 Racket 未按预期运行

c++ - 在C++中 boost 日志记录和“类对象”日志记录行为

具有抽象类指针的对象的 C++ 拷贝

c - 在 C 中修剪字符串(不使用库函数)

c - 尝试在矩阵单元格中添加值时写入无效

C++ Phidg​​et 事件处理程序 undefined reference 'linker'

c# - 使用 LINQ 从索引不等于 int 的列表中获取项目

java - 尝试填充单链表

css - Joomla:重新启动列表项编号