如何在c ++中声明volatile迭代器

时间:2009-02-26 16:35:57

标签: c++ iterator volatile

有没有办法声明一个迭代器,它是一个类中的成员变量,并且可以使用成员函数递增,即使该类的对象是const。

4 个答案:

答案 0 :(得分:7)

那将是“mutable”关键字。

class X
{
public:
   bool GetFlag() const
   {
      m_accessCount++;
      return m_flag;
   }
private:
   bool m_flag;
   mutable int m_accessCount;
};

答案 1 :(得分:5)

您确定需要迭代器作为成员吗?迭代器有能力:它们变得无效。这是设计问题的一个小标志。

答案 2 :(得分:3)

声明它是可变的,而不是易变的。

答案 3 :(得分:-1)

知道了。

using namespace std;
class tmptest
{
    public:
    void getNextItr()const
    {
        m_listItr = m_list.begin();
        m_listItr++;
    }
    list<string> m_list;
    mutable list<string>::const_iterator m_listItr;
};

const_iterator一起变异。谢谢你提醒我可变与易变。 我变得容易混淆与变异。再次感谢!