Как реализовать конструктор копирования / оператор присваивания для класса, который имеет указатель на себя? - PullRequest
0 голосов
/ 11 февраля 2019

Я не совсем уверен, возможно ли реализовать конструктор копирования / оператор присваивания, чтобы, если бы я хотел, чтобы этот класс был равен другому экземпляру bag, он заменил бы себя этим экземпляром.

Я уже попробовал реализацию общего оператора присваивания (проверка на самоссылку и т.Я ожидаю, что смогу иметь мешки содержать себя и яблоки.

1 Ответ

0 голосов
/ 11 февраля 2019

Нет необходимости использовать

bags<T> * self;

Всегда есть предоставленный язык this.Если вы по какой-то причине должны использовать self, сделайте его функцией-членом.

bags<T> const* self() const
{
   return this;
}

bags<T>* self()
{
   return this;
}

Другой вариант - использовать локальные переменные функции.

bags<T> const* self = this;  // In const member functions.
bags<T>* self = this;        // In non-const member functions.
...