Ваша проблема в функции конструктора копирования:
shared_pointer( shared_pointer& a)
{
a.pointer = this->pointer;
howManyObjects++;
}
Итак, в соответствии с пробелом перед типом параметра a вы, вероятно, знаете, что по правилам конструктора копирования это должно быть const.Но, когда вы попытались поместить туда const
, вы получили следующую ошибку:
shared_pointer(const shared_pointer& a)
{
a.pointer = this->pointer; // Compilation error: assignment of member ‘shared_pointer<int>::pointer’ in read-only object
howManyObjects++;
}
Итак, вы попытались удалить const
и получили ошибку, отображаемую в вашем посте.Проблема была не в том const, который вы пытались вставить, а в направлении назначения.Вы не хотите изменять значение параметра, но текущее значение объекта.Измените свой конструктор копирования на следующий, и все будет хорошо:
shared_pointer(const shared_pointer& a)
{
this->pointer = a.pointer; // Pay attention that this get the value of a, and not the opposite.
howManyObjects++;
}