Как запретить использование конструктора копирования и оператора присваивания? Т.е. так чтобы классом мог пользоваться только другой класс, а в 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(){}
};
Комментариев нет:
Отправить комментарий