Страницы

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

пятница, 13 марта 2020 г.

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

#cpp


Как запретить использование конструктора копирования и оператора присваивания? Т.е.
так чтобы классом мог пользоваться только другой класс, а в main нельзя было создать
экземпляр этого класса.

В main компилироваться не должен, а в другом классе это было бы возможно:

A a;
A a(b);
A a=b;

    


Ответы

Ответ 1



Можно решить данную проблему с использованием дружественного класса: 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(){} };

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

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