我正在尝试对一次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函数中编辑值,但是我不确定如何执行此操作。
答案 0 :(得分:3)
像这样incrementCounter
声明mutable
:
mutable int incrementCounter;
然后您就可以在findPos
函数中对其进行更改。
mutable -
适用于非引用非const类型的非静态类成员,并指定该成员不影响该类的外部可见状态(常用于互斥体,备忘录缓存,惰性求值,和访问工具)。 const类实例的mutable
成员是可修改的。
(注意:C ++语言语法将可变变量视为存储类说明符,但不会影响存储类。)