Аргумент для вашего конструктора копирования Set::Set(Set& copied)
не является ссылкой const
.Оператор Set Set::operator+(const Set& rhs)const
равен const
, поэтому this
равен const Set *
, а *this
равен const Set
.Поскольку вы не можете передать const T
аргументу T&
(он бы отбросил const
), вы не можете использовать конструктор копирования в этом контексте.
Чтобы это исправить, создайте конструктор копированиявместо этого принимайте const Set &
, так же как и функция-член copy
:
Set::Set(const Set& copied)
// ^^^^^ Added const here
{
copy(copied);
}
Редактировать: Обязательный отказ от ответственности, что вам не нужно писать свой собственный динамически изменяемый массив.Вместо этого используйте std::vector
.Это значительно упростит ваш тип и, вероятно, будет намного безопаснее.