Мой класс имеет следующие частные переменные, в том числе константный статический, как вы можете видеть:Как использовать конструктор копирования для копирования по постоянным переменным?
private:
// class constant for # of bits in an unsigned short int:
const static int _USI_BITS = sizeof(usi)*CHAR_BIT;
usi* _booArr;
int _booArrLen;
int _numBoos;
Я новичок в использовании конструкторы копирования, и я не могу понять, как написать один. Вот моя попытка:
BitPack::BitPack(const BitPack& other) {
_USI_BITS = other._USI_BITS;
_booArr = new usi[other._booArrLen];
for (int i = 0; i < _booArrLen; ++i)
_booArr[i] = other._booArr[i];
_booArrLen = other._booArrLen;
_numBoos = other.numBoos;
}
Компилятор говорит:
ошибка: назначение только для чтения переменной 'BitPack :: _ USI_BITS'
Пожалуйста разуверить меня из моих глупых способов.
Является 'const' немного давание прочь. Это постоянно! –
Все экземпляры 'BitPack' имеют один и тот же _static_ элемент данных' _USI_BITS'. Таким образом, вы уверены, что хотите скопировать его через экземпляры? – timrau
'_USI_BITS' является' const', но вы пытаетесь его изменить. Возможно, это должно быть не 'static', а' const' в первую очередь, если оно полагается на экземпляры класса. – 0x499602D2