好吧,伙计们,我一直在寻找这个错误的答案,但我没有针对我的案例。 我有一个类User,每个User都有自己的Computers列表,类Computer由这三个类(Operative Sistem,Memory和Processor)组成。因此,Computer有自己的toString,它从上面命名的组件中调用特定的toString。
所以...用户有他的属性列表computerList;
在我打电话给Controler的其他课程中,我有一个从特定用户打印计算机列表的功能。 这是我的功能:
void printComputerList(User* u){
list<Computer*>::iterator itr;
for(itr=u->getComputerList().begin(); itr!=u->getComputerList().end(); itr++){
cout<<(*itr)->toString(); //(*itr) calls its own toString implemented in the class Computer
}
}
所以,当我运行程序时,当我选择打印我已填充的列表时 我从标题中得到错误。 我想这可能是一些混乱之间的混淆?
PD:如果是必要的话,我可以发布剩下的代码
谢谢!
答案 0 :(得分:1)
临时列表存在(至少)一个问题。固定版本看起来像:
void printComputerList(User* u){
list<Computer*> const computers = u->getComputerList();
list<Computer*>::const_iterator it = computers.begin();
while (it != computers.end())
{
cout << (*it)->toString(); //(*it) calls its own toString implemented in the class Computer
++it;
}
}
你确定,列表上的指针是有效的(非空,不是悬空)吗?