【发布时间】:2011-12-06 00:55:38
【问题描述】:
我的代码在下面,我遇到了 numberCollisions += collisionNum 的错误; 错误状态“numberCollisions”无法修改,因为它是通过 const 对象使用的。这个错误只是因为它是一个 const 函数而弹出吗?感谢您的帮助。
int HashTable_qp::findPos( const string & x ) const
{
/* 1*/ int collisionNum = 0;
/* 2*/ int currentPos = myhash( x, array.size( ) );
/* 3*/ while( array[ currentPos ].info != EMPTY &&
array[ currentPos ].element != x )
{
/* 4*/ currentPos += 2 * ++collisionNum - 1; // Compute ith probe
/* 5*/ if( currentPos >= array.size( ) )
/* 6*/ currentPos -= array.size( );
}
numberCollisions += collisionNum;
/* 7*/ return currentPos;
}
【问题讨论】:
-
¤ 是的,您正在尝试修改对象的一部分,逻辑上是
const。很可能这会告诉您更新numberCollisions不是正确的做法。或者,如果正确,则删除const。在任何情况下,您都不应将其设为mutable,或拥有指向它的成员指针,或对编译器的const检查进行任何此类规避,这类似于将核电站的警报喇叭静音。我之所以提到这一点,是因为您可能会得到一两个建议的答案。干杯&hth.,