Когда вы присваиваете объект, используя =
, объект копируется, переменная слева уже создана, поэтому она должна каким-то образом получить копию состояния объекта справа от присвоения.
Но иногда трудно скопировать объект.В некоторых случаях это происходит из-за того, что некоторые внутренние элементы данных объекта не могут быть скопированы, или из-за того, что их копирование затруднено или занимает много времени.
В любом случае, когда автор класса решает, что копии не будут работать для этого класса, он / она отменяет определение метода operator=
, чтобы пользователи класса никогда не пытались назначить объекты этого класса.учебный класс.См. этот вопрос для получения дополнительной информации по этому вопросу.
Но это не большая проблема.Как правило, для объектов такого типа вы не хотите, чтобы все равно счастливо запускались копии объектов.Вместо этого вам нужно работать со ссылками и указателями.
class Image {
CDC* dcMem; // <-- declare member variable as a reference
};
Image::Set_dcMem(CDC& _dcMem) // <-- pass references instead of objects
{
dcMem = &_dcMem; // <-- you can assign references just fine
}