|
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
|
||||||||||||||||
Как обратится к обьекту класса, являющегося наследником абстрактного класса31.07.2015, 23:58. Показов 10191. Ответов 131
Метки нет (Все метки)
Здравствуйте!
У меня есть 4 класса: один виртуальный, следующие 2 - наследуют виртуальный класс и последний класс содержит указатель на виртуальный класс (динамический массив, который растет от методов buildCar и buildTruck). eFuel - это также класс, который содержит еще класс, но в данном вопросе они не принимают участия. Вопрос: как через указатель четвертого класса доступится к наследующим классам?
0
|
||||||||||||||||
| 31.07.2015, 23:58 | |
|
Ответы с готовыми решениями:
131
Как полю класса А обратится к приватной функции класса А?
|
|
|
|||||
| 01.08.2015, 16:01 | |||||
|
Да и по сути, что это код делает? К примеру чем тут конструктор не устроил? Добавлено через 3 минуты Добавлено через 1 минуту
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 01.08.2015, 16:06 | |||
|
если разраб через полгода собственный код вразуметь не в состоянии - ну его трудности. значит такой разраб. "пьяный проспится, дурак - никогда"(ц)Петр 1. и кстати, чем меньше всякой ботвы, тем проще код. когда я читаю чужой код, я смотрю на то, что код делает по факту. а не на то, чего он мог бы сделать, или не мог. Добавлено через 56 секунд
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 01.08.2015, 16:22 | ||
|
А вообще есть разные варианты применения такого. Когда конструктор спрятан, чтобы кто попало не мог создать объект. Это как раз пример усиления инкапсуляции, путем накладывания дополнительных ограничений. Ты же сам с подобного примера и начал. В любом случае, без конкретной задачи целесообразность подобного обсуждать бессмысленно. В С++ есть много идиом, которые без упоминания конкретной задачи могут показаться бредом. PS. Вообще, если интересно, демонстрационный пример использовал в основе эту идиому: https://en.wikibooks.org/wiki/... onstructor Однако это напрямую не относится к обсуждаемому вопросу.
2
|
||
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|||||||
| 01.08.2015, 16:48 | |||||||
. Чтобы юзер не смог вообще его видеть.Или нам нужно решение в виде костылей ?
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 01.08.2015, 17:02 | |||
|
но в голове у вас конкретная каша.
0
|
|||
|
|
|||||||
| 01.08.2015, 17:07 | |||||||
|
Класс Base пустой.... явно чего то нехватает... Добавлено через 48 секунд Добавлено через 45 секунд
0
|
|||||||
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|||
| 01.08.2015, 17:17 | |||
|
P.S меньше читайте всяких умников - больше пишите кода, иначе только забьете голову всяким бредом так и не научившись кодить
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 01.08.2015, 17:31 | ||||||||
|
значит вы в любом случае будете это делать. насколько там понятный будет код, зависит от квалификации автора. ничто не мешает писать понятный код. откуда у вас такая нужда возникла, это вопрос отдельный, и открытый. явно не из-за декларации в приватной части класса некого френда. для написания понятного кода. Инкапсуляция данных - это не сокрытие данных. 2. в примере выше у класса был закрыт конструктор. автор этого кода сделал это специально. ваша реакция на это показывает, что вы не осознаете сути момента. в частности: что бы такие как вы, которые не в теме, не смогли отстрелить себе ноги. Добавлено через 1 минуту правда я уже староват для таких советов.
0
|
||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 01.08.2015, 17:47 | |||
![]() А вообще, все уже было сказано, повторяться не буду. Читай еще раз сначала. Добавлено через 2 минуты
0
|
|||
|
|
|||||||||||||
| 01.08.2015, 17:59 | |||||||||||||
|
Добавлено через 2 минуты Вспомогательное
0
|
|||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 01.08.2015, 18:10 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||||||||||||||
| 01.08.2015, 18:52 | ||||||||||||||||||||||||||||
|
различие лишь в незначительных технических деталях:
в обоих случаях, в качестве фабрики использованы свободные функции. в обоих случаях они - часть интерфейса класса единственная разница в том, что статическая-функция член существует в пространстве имени своего класса а функция друг - вне пространства имени класса. никаких других отличий в данном случае нет вообще. господин DrOffset, безуспешно пытается донести до вас, что друг класса - это на самом деле такая же полноценная, и полноправная часть класса, как и другие его части. недаром, что функцию член можно определить прямо в теле декларации класса:
однако поскольку, часто френдами злоупотребляют, сливая потроха кому ни поподя, нарушая инкапсуляцию, и превращая таким образом код в лапшу, то это и породило миф якобы о том, что френды - зло, и нарушают инкапсуляцию. Добавлено через 39 минут есть 3 штуки элементов, связка которых определяет модель данных. и есть манагер, в который вынесена вся логика организации связей. видимо, создатель решил вынести лапшу связанную с организацией связи в одно место, что бы не размазывать по всем этим классам. с точки зрения архитектуры - вполне себе нормальны ход. однако, я противник подобного дизайна:
кто захватывал, тот и должен освобождать. я за то, что бы не использовать указатели там, где по смыслу ожидаются живые объекты.
2
|
||||||||||||||||||||||||||||
|
|
||
| 01.08.2015, 19:01 | ||
|
Касательно указателя указателя так так и должно быть, указатель в обычных случаях может стать невалидным (Удаляем "родителя" удаляются "дочки", в данном случае у ребра два родителя, а с учетом графа - три)
0
|
||
|
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
|
|
| 01.08.2015, 19:02 [ТС] | |
|
0
|
|
|
|
||||
| 01.08.2015, 19:15 | ||||
|
hoggy, Я с этой специально и привел пример с сильносвязными объектами.
Добавлено через 2 минуты Добавлено через 3 минуты Добавлено через 1 минуту
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 01.08.2015, 19:45 | ||||||||
но логически (и на практике) - это часть интерфейса самого контейнера. например, никто не сделает ничайно delete ссылке, которую вернула функция. и у пользователя не возникнет сомнений касательно прав владения ресурсом.
0
|
||||||||
|
|
||
| 01.08.2015, 20:08 | ||
|
Это прослойка/интерфейс между контейнерами и алгоритмами. Т.е нечто то что смещенно в сторону алгоритмов. Само по себе существование итератора в отрыве от алгоритмов - нелепо. Как к примеру и friend оператор. friend это такие себе "мостики" между несколькими "сущностями". И пример DrOffset с использованием friend мне не понятен, мне кажется это необоснованным тем более кода есть альтернатива со статическим методом. Да смысла в том что запрещать использования создания через конструктор я не уловил. Только для запрета копирования? Так есть для этого прием NonCopyable причем которые не запрещает создавать объекты "не динамически". Если подразумевалась фабрика/фабричный метод, так там по сути несколько классов, т.е дружественность на своем месте, месте "посредника". Хотя там и без дружественности вероятно можно обойтись...
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 01.08.2015, 20:13 | ||||||||||||
|
который является контейнером для всех этих ребер и вершин. он создает вершины/ребра. он и должен их прибивать. обратите внимание:
они в принципе не могут существовать отдельно от своего графа. их возможные взаимосвязи - детали реализации контейнера. то есть, кто там кому дочкой приходится - это уже внутренняя абстракция разработчика контейнера. вызывающую сторону не касается. наружу, как и любой другой нормальный контейнер, граф выдает только ссылки на свои элементы. и никто снаружи по этим ссылкам не должен их прибивать. хорошая новость в том, что delete ссылкам не делают.
0
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 01.08.2015, 20:27 | |||||
|
оно вам только глаз замыливает. есть контейнер. и есть вызывающая сторона. которая может выполнять манипуляции над контейнером. все действия над контейнером осуществляются посредством его интерфейса. например, что бы получить элемент контейнера, необходимо использовать его интерфейс. это можно сделать, дернув напрямую функцию-член. или дернув итератор. а в том что касается алгоритмов: в итераторы вынесли нечто общее для всех контейнеров. и стандартизировали. то есть, алгоритмы тупо закладываются на интерфейс контейнеров. представьте себе, что по какой то прихоти программист реализовал с использованием френда, а не на статической функции. в дизайне от этого ровным счетом вообще ничего не изменилось. это два разных способа, которые делают одно и тоже действие. Добавлено через 54 секунды
1
|
|||||
| 01.08.2015, 20:27 | |
|
Метод абстрактного класса не видит переменные дочернего класса
Как инициализировать члены класса, являющегося параметром шаблона Как обратится к объекту класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|