1

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

4

4 回答 4

7

那将与“可变”关键字一起使用。

class X
{
public:
   bool GetFlag() const
   {
      m_accessCount++;
      return m_flag;
   }
private:
   bool m_flag;
   mutable int m_accessCount;
};
于 2009-02-26T16:38:24.430 回答
5

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

于 2009-02-26T17:00:31.193 回答
3

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

于 2009-02-26T16:38:49.840 回答
-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作品变化。感谢您提醒我 mutable 与 volatile。我将 volatile 与 mutable 混淆了。再次感谢!

于 2009-02-26T17:39:04.673 回答