以恒定函数递增计数器

时间:2018-11-28 07:14:16

标签: c++ loops

我正在尝试对一次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 :(得分:3)

像这样incrementCounter声明mutable

mutable int  incrementCounter;

然后您就可以在findPos函数中对其进行更改。

  

mutable -
  适用于非引用非const类型的非静态类成员,并指定该成员不影响该类的外部可见状态(常用于互斥体,备忘录缓存,惰性求值,和访问工具)。 const类实例的 mutable成员是可修改的。
  (注意:C ++语言语法将可变变量视为存储类说明符,但不会影响存储类。)