为什么我打印的值超出范围?

Why I'm printing value out of range?

考虑这段代码:

class Foo123
{
    QList<int> a = (QList<int>()) << 1 << 2 << 3;
    QList<int>::const_iterator it;

public:

    Foo123()
    {
        it = a.begin();
    }

    void print()
    {
        qDebug() << *it;
        while(move())
        {
            qDebug() << *it;
        }
    }


    bool move()
    {
        if(it != a.end())
        {
            ++it;
            return true;
        }

        return false;
    }
};

    Foo123 f;
    f.print();

我总是在打印结束时得到一个额外的数字,就像这样:

1
2
3
58713 // this is random, from what I can tell

我想我正在打印范围值,但我不明白如何打印。有人可以指出我的错误吗?

因为要先自增,再测试:

bool move()
    {
        ++it;
        if(it != a.end()) {
            return true;
        }

        return false;
    }

请注意,在 C++11 中,您可以使用初始化列表来初始化列表 (sic),您也可以就地初始化迭代器。

所以,整件事,固定的,将是:

#include <QtCore>

class Foo123
{
   QList<int> a { 1, 2, 3 };
   QList<int>::const_iterator it { a.begin() };
public:
   void print()
   {
      qDebug() << *it;
      while (move()) qDebug() << *it;
   }
   bool move()
   {
      ++ it;
      return (it != a.end());
   }
};

int main() {
   Foo123 f;
   f.print();
}