我有以下代码:

QLinkedList<Usuario*> conectados;
Usuario *jose = new Usuario("Jose",1,1234);

conectados << jose;
conectados << new Usuario("Prueba2",1,123);
conectados << new Usuario("Prueba3",1,123);

QLinkedList<Usuario*>::iterator iterator;
for(iterator = conectados.begin(); iterator != conectados.end(); iterator++)
{
  qDebug()<< (*iterator)->getUserName();
}


并输出:

“ Prueba3”
“ Prueba3”
“ Prueba3”

我尝试了QLinkedList,这是一个没有指针的链表,但结果相同。我不知道我在做什么错。我相信我将相同的指针附加到链表,或覆盖了相同的对象。

谢谢您的帮助。对不起,我的英语不好。

最佳答案

我拿了你的代码片段,并填补了空白。我在这里没有看到任何问题-它必须在您的访问器方法getUserName();中。

class Usuario
{
public:

  Usuario(const QString name, int value1, int value2) : m_Name(name) {}

  QString getUserName() {
    return m_Name;
  }

private:
  QString m_Name;
};

int main(int argc, char* argv[])
{
  QLinkedList<Usuario*> conectados;
  Usuario *jose = new Usuario("Jose",1,1234);

  conectados << jose;
  conectados << new Usuario("Prueba2",1,123);
  conectados << new Usuario("Prueba3",1,123);

  QLinkedList<Usuario*>::iterator iterator;
  for(iterator = conectados.begin(); iterator != conectados.end(); iterator++)
  {
    qDebug()<< (*iterator)->getUserName();
  }
  return 0;
}


输出:

"Jose"
"Prueba2"
"Prueba3"

08-17 00:38