0

好吧,伙计们,我一直在寻找这个错误的答案,但我没有针对我的案例的具体答案。我有一个用户类,每个用户都有自己的计算机列表,计算机类由这三个类(操作系统、内存和处理器)组成。所以 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:如有必要,我可以发布其余代码

谢谢!

4

1 回答 1

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;
  }
}

你确定,列表上的指针是有效的(非空的,不是悬空的)吗?

于 2012-06-16T18:21:29.507 回答