Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
"идентификатор": нет доступных конструкторов копии или конструктор копии объявлен как "explicit"
Замечания
Конструктор копий предназначен для инициализации объекта на базе другого объекта того же типа. (Это делает копию объекта.) Компилятор создает конструктор копирования по умолчанию, если вы не определяете конструкторы.
Устранение этой ошибки
Проблема может возникнуть при попытке скопировать класс, конструктор копии которого объявлен как
private. В большинстве случаев класс, конструктор копии которого объявлен какprivate, не подлежит копированию. Конструктор копий рекомендуется объявлять какprivateв тех случаях, когда необходимо запретить непосредственное использование класса. Такой класс может не использоваться полностью или использоваться только совместно с другим классом.Если вы полагаете, что использование класса с конструктором копии
privateбезопасно, создайте класс, производный от класса с конструкторомprivate, и определите доступный в новом классе конструктор копииpublicилиprotected. Вместо исходного класса используйте производный.Проблема может возникнуть при попытке скопировать класс, конструктор копии которого является явным. Если конструктор копии объявлен как
explicit, передача объектов класса в функции и возврат из них не допускается. Дополнительные сведения о явных конструкторах см. в разделе "Преобразования определяемых пользователем типов".Проблема может возникнуть при попытке создания копии экземпляра класса, объявленного как
const, с помощью конструктора копии, не принимающего ссылочного параметраconst. Объявите конструктор копии со ссылкой на типconstвместо ссылки на тип, не являющийся константным.