我正在使用无符号字符为我的面向对象编程课程中的赋值创建一个位数组。我得到了我们需要的功能的基本布局。一个是我们的查询函数,它是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
答案 0 :(得分:0)
其他函数也需要标记为const。如果它们不是const,那么你没有业务从const函数调用它们。