Инкремент счетчика в постоянной функции - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь сохранить счетчик того, сколько раз проходит цикл while.Тем не менее, код был предоставлен мне, и я не уверен, какой способ изменить код, чтобы иметь возможность увеличивать код.

int findPos( const HashedObj & x ) const
{
    int offset = 1;
    int currentPos = myhash( x );

    while( array[ currentPos ].info != EMPTY &&
           array[ currentPos ].element != x )
    {
        currentPos += offset;  // Compute ith probe
        offset += 2;
        incrementCounter++;
        if( currentPos >= array.size( ) )
            currentPos -= array.size( );
    }

    return currentPos;
}

Когда я скомпилирую это, я получаю "incrementCounter не может быть измененпотому что к нему обращаются через объект const "

Когда я вижу это, я знаю, что не могу редактировать значение в функции const, но я не уверен, как это сделать.

1 Ответ

0 голосов
/ 28 ноября 2018

Объявите incrementCounter как mutable следующим образом:

mutable int  incrementCounter;

Тогда вы сможете изменить его в функции findPos.

mutable -
применяется к нестатическим членам класса неконстантного неконстантного типа и указывает, что член не влияет на внешне видимое состояние класса(как часто используется для мьютексов, кэшей заметок, отложенной оценки и доступа к инструментам).mutable члены экземпляров классов const являются изменяемыми.
(Примечание: грамматика языка C ++ рассматривает mutable как спецификатор класса хранения, но не влияет на класс хранения.)

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