Как объявить энергозависимый итератор в C ++ - PullRequest
1 голос
/ 26 февраля 2009

Есть ли способ объявить итератор, который является переменной-членом в классе и может быть увеличен с помощью функции-члена, даже если объект этого класса является постоянным.

Ответы [ 4 ]

7 голосов
/ 26 февраля 2009

Это будет с ключевым словом "mutable".

class X
{
public:
   bool GetFlag() const
   {
      m_accessCount++;
      return m_flag;
   }
private:
   bool m_flag;
   mutable int m_accessCount;
};
5 голосов
/ 26 февраля 2009

Вы уверены, что вам нужен итератор в качестве члена? Итераторы имеют возможность: они становятся недействительными. Это маленький признак проблемы дизайна.

3 голосов
/ 26 февраля 2009

Объявить, что оно изменчиво, а не изменчиво.

0 голосов
/ 26 февраля 2009

Понял.

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

Mutable вместе с const_iterator работает. Спасибо, что напомнили мне изменчивый, а не изменчивый. Меня спутали с изменчивым. Еще раз спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...