为什么我不能在const函数内部使用这个函数?

时间:2014-04-16 03:20:20

标签: c++ const bit-manipulation

我正在使用无符号字符为我的面向对象编程课程中的赋值创建一个位数组。我得到了我们需要的功能的基本布局。一个是我们的查询函数,它是const。

这是我的会员资料:

unsigned char* barray;         // pointer to the bit array
unsigned int arraySize;
static const unsigned int charSize = (sizeof(unsigned char) * 8);

这是我遇到的问题:

bool BitArray::Query(unsigned int index)const{
unsigned int i = (Index(index)),
    p = Position(index);

unsigned int check = 1;
check = Move(check, p);

if ((check & barray[i]) == 0)
    return false;
else
    return true;

}

该功能以及操作员<<重载(也使用const关键字)当我在其中使用其他函数(索引,位置,移动)时,对我很生气。

“IntelliSense:该对象具有与成员函数不兼容的类型限定符”BitArray :: Index“对象类型为const BitArray”

发生了什么事?

/* determine which element in array of chars to use */
unsigned int BitArray::Index(unsigned int n){
unsigned int index = (n / charSize);
if (((n % charSize) == 0) && (index < 0)){
    index -= 1;
}
return index;

}

/* determine index of bit of the particular char */
unsigned int BitArray::Position(unsigned int n){
unsigned int position = n;
position -= ((n / charSize) * charSize);
if (position == 0)
    position = charSize - 1;
else
    position--;
return position;

}

unsigned int BitArray::Move(unsigned int n, unsigned int m){
    return n << m;

}

使用Microsoft Visual Studio Express 2013

1 个答案:

答案 0 :(得分:0)

其他函数也需要标记为const。如果它们不是const,那么你没有业务从const函数调用它们。