Страницы

Поиск по вопросам

суббота, 1 июня 2019 г.

Запрет конструктора копирования и оператора присваивания

Как запретить использование конструктора копирования и оператора присваивания? Т.е. так чтобы классом мог пользоваться только другой класс, а в main нельзя было создать экземпляр этого класса.
В main компилироваться не должен, а в другом классе это было бы возможно:
A a; A a(b); A a=b;


Ответ

Можно решить данную проблему с использованием дружественного класса:
class myClassClose{ myClassClose(); //конструктор по умолчанию myClassClose(const myClassClose&); //конструктор копирования myClassClose(myClassClose&&); //конструктор перемещения myClassClose operator = (const myClassClose&) const; //оператор присваивания myClassClose operator = (myClassClose&&) const; //оператор присваивания с перемещением public: friend class myClass; };
class myClass{ myClassClose a; public: myClass(){} };

Комментариев нет:

Отправить комментарий