|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
Как лучше запретить копирование объекта?13.12.2014, 13:15. Показов 17021. Ответов 57
Метки нет (Все метки)
Есть класс, надо запретить копирование его экземпляров. Можно как то сделать, чтоб в интерфейсе класса вообще не было конструктора копии и оператора копирующего присваивания?
0
|
|
| 13.12.2014, 13:15 | |
|
Ответы с готовыми решениями:
57
Как запретить копирование с флешки? Как запретить копирование диска? Как обойти "запретить копирование" |
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.12.2014, 16:28 [ТС] | ||
|
0
|
||
|
|
||||||
| 14.12.2014, 16:37 | ||||||
|
Как сделать три (аналогично - десять-двадцать-сто...) класса некопируемых сущностей с минимальными затратами и с минимальным риском в одном (-двух-пятнадцати...) из них где-то случайно накосячить:
0
|
||||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||
| 14.12.2014, 16:49 [ТС] | ||||||||
|
Добавлено через 4 минуты Поэтому
0
|
||||||||
|
|
|||||||
| 14.12.2014, 16:53 | |||||||
|
Только делать какой-нибудь некопирующий миксин к классу, и использовать его вместо самого класса. Или что-то такого рода (не уверен, что скомпилируется, это только набросок):
0
|
|||||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.12.2014, 16:56 [ТС] | ||
|
0
|
||
|
|
||||||||
| 14.12.2014, 16:59 | ||||||||
Добавлено через 1 минуту
0
|
||||||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.12.2014, 17:08 [ТС] | ||
|
А ни как проще нельзя было написать? Зачем обязательно нужны импортные аббревиатуры? Я то вику читать умею, но в тему может забрести кто угодно. И да, мне нужен именно не наследуемый признак.
Добавлено через 52 секунды Добавлено через 5 минут Что у Ваших "игровых объектов" закономерно общего? Имя у человека и у пета? А я может пишу игру, в которой петы безымянны? Общие признаки/операции должны вытекать из родства классов, а не наоборот. И не надо смешивать наследование со случайным совпадением признаков не родственных сущностей, или операций над ними. Ладно ещё класс "существо", это ещё можно понять. Но звезда каким боком к человеку? Это уже не ООП.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 14.12.2014, 17:26 | |||
|
В изначальном сообщении, к тому же, не было подобных деталей (особенно насчет перемещения). Тут стоит отметить, что как-только мы определили в классе собственные оператор\конструктор перемещения, то присваивающие их версии автоматически помечаются как deleted. Вернуть их в строй после этого можно только явно определив, если мы этого не сделаем, то класс так и останется перемещаемым, но некопируемым. И в этом случае можно обходиться без идиомы noncopyable вообще. Естественно это применимо только к С++11, в С++03 все несколько сложнее и noncopyable пришлось бы оставить. А функции перемещения заменить на явные swap. Вот небольшая иллюстрация на примере массива. Добавлено через 4 минуты
0
|
|||
|
|
||
| 14.12.2014, 17:29 | ||
|
Эта пятерка классов имеет общее то, что является частью абстрактной (не путать с абстрактными классами, абстрактным мышлением и абстрактным искусством!) простенькой игры. Игровые объекты могут находиться на карте, взаимодействовать друг с другом, отображаться на экране и т.п. Поскольку игра простенькая, то мы не выделяем отдельно PhysicalObject, GraphicalObject, ScryptableObject и другие, и валим весь функционал в GameObject. К сожалению, я не могу позволить себе потратить ближайшие несколько месяцев на объяснение вам того ООП, каким оно является для меня и многих других людей, не совпадающих с вами, поэтому вынужден отправить вас гуглить информацию о данной интерпретации ООП. Данная ссылка будет хорошим началом для ваших поисков.
0
|
||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.12.2014, 17:31 [ТС] | |
|
0
|
|
|
|
||||||||||||||||||||||||||||
| 14.12.2014, 17:54 | ||||||||||||||||||||||||||||
Еще раз. Ниже представлены четыре РАЗНЫХ класса (у двух пар из них, так уж случилось, имена совпадают; но эти пары из разных проектов, и находятся в разных файлах исходного кода):
Dixi.
0
|
||||||||||||||||||||||||||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 14.12.2014, 18:01 [ТС] | ||
|
0
|
||
|
Заблокирован
|
|
| 14.12.2014, 21:31 | |
|
Croessmah, гром, дураки-минусовальщики.
0
|
|
|
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 86
|
||||||
| 22.07.2022, 20:57 | ||||||
|
Прошу прощения за некропост, начал изучать SFML и столкнулся с данной задачей.
0
|
||||||
|
Неэпический
|
|||||||
| 22.07.2022, 21:15 | |||||||
|
Объявляют их в private, поэтому никто к ним доступа не имеет и еще оставляют без реализации эти функции. Соответственно, у наследника компилятор не будет генерировать конструктор копирования. В С++11 вы можете сделать так:
Idioms/Non-copyable Mixin
1
|
|||||||
|
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 86
|
|
| 22.07.2022, 21:17 | |
|
Croessmah, первая строчка объявляет оператор копирования , а вторая оператор присваивания ? правильно?
0
|
|
|
3 / 3 / 0
Регистрация: 14.07.2012
Сообщений: 86
|
|
| 22.07.2022, 21:18 | |
|
0
|
|
| 22.07.2022, 21:18 | |
|
Как запретить копирование данных с диска Как запретить копирование текста из RichtextBox в буфер обмена? Как запретить заход одного объекта на другой? Как запретить создание объекта в таком случае
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
Сразу отвечу: А в PvP с ним. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|