|
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
|
||||||||||||||||
Как обратится к обьекту класса, являющегося наследником абстрактного класса31.07.2015, 23:58. Показов 10208. Ответов 131
Метки нет (Все метки)
Здравствуйте!
У меня есть 4 класса: один виртуальный, следующие 2 - наследуют виртуальный класс и последний класс содержит указатель на виртуальный класс (динамический массив, который растет от методов buildCar и buildTruck). eFuel - это также класс, который содержит еще класс, но в данном вопросе они не принимают участия. Вопрос: как через указатель четвертого класса доступится к наследующим классам?
0
|
||||||||||||||||
| 31.07.2015, 23:58 | |
|
Ответы с готовыми решениями:
131
Как полю класса А обратится к приватной функции класса А?
|
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
||
| 01.08.2015, 03:18 | ||
0
|
||
|
|
|||
| 01.08.2015, 03:27 | |||
|
... хорошо если их всего один уровень, а если больше? Добавлено через 2 минуты
0
|
|||
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|
| 01.08.2015, 03:36 | |
|
0
|
|
|
|
||||||||||||
| 01.08.2015, 03:57 | ||||||||||||
Ну и с закрытием как вариант с разруливание проблемы
3
|
||||||||||||
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
||
| 01.08.2015, 04:59 | ||
|
Добавлено через 27 минут
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 01.08.2015, 05:23 | |||||||
|
всем остальным - читать Макконелла. если Макконелл не поможет - уже ничто не поможет. зы: Avazart, в отдельных случаях данные члены могут быть открытыми/защищенными. это случаи, когда они логически являются частью интерфейса, а не данными. то есть, они отвечают за управление классом (подобно публичным методам), а не за состояние его экземпляра. пример: допустим, есть кнопка (библиотечный класс), и нужно посетить реакцию на клик: http://rextester.com/GBPX73313
потому что весь дизайн уже задал std::function. и сеттеру тупо нечем было бы заниматься. в принципе.
0
|
|||||||
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
| 01.08.2015, 05:24 | |
|
Собственно, теперь понял, почему размер классов у меня рос с прогрессией 16 48 104, вместо 16 40 64.
Avazart, спасибо за терпение, обсуждение и примеры.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 01.08.2015, 06:39 | ||
|
0
|
||
|
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
|
|||||||
| 01.08.2015, 06:59 | |||||||
Конструктор специально убрали. В объявлении C явно указано public B - а следовательно, переопределяя дефолтный конструктор мы можем явно вызвать только конструктор B. Класс C еще ничего не знает про A, точнее знает поскольку декларация уже произошла, но не знает что это дедушка для него, выясняется это только, когда конструктор B вызвал конструктор A,а C вызвал B. Все тоже самое происходит даже если мы не определяли конструктор, ибо подставится компилятором.В итоге класс C увидит у класса B все, что у него там унаследовано от отца.Теперь развиваем магию над int v_ в C заносим (только первый вариант кода).
0
|
|||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||
| 01.08.2015, 07:02 | ||
|
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 01.08.2015, 07:48 | ||
|
который на самом деле тупо делегирует все std::function? на крайняк конструктор может принимать std::function, а не указатель-на-функцию. это позволит избежать шаблоно-кода, и не придется ограничивать функционал только лишь указатель-на-функцию. ну ок. слепили. и тут проблема: у кнопки может быть до чертиков разных событий: CLICK, DCLICK, PASSED,HOVER,OUT - это лишь джентельменский набор. сюда ещё можно добавить кучу всякой всячины: дрангдроп, селект, масс-селект, юзерские события, тп. и что осталось от вашего феншуя? -------------- по феншую конструктор должен принимать только и только самый минимум настроек, минимально необходимый для сохранения работоспособности. количество самих конструкторов при этом должно быть минимальным: только для поддержания дизайна в рабочем состоянии. но никто в здравом уме не делает кастомизацию в конструкторах.
0
|
||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||
| 01.08.2015, 10:20 | ||||
|
0
|
||||
|
|
|
| 01.08.2015, 11:17 | |
|
hoggy, Ну впринципе да всегда могут быть исключения, стоит смотреть по месту, но мне кажется все же стоит думать о том как спрятать - Signals2
Ибо открытым мы делает все же объект, в том время как в нем может быть больше возможностей чем нам хотелось бы показать. Что касается исключения- паттерн property
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 01.08.2015, 11:28 | |||
|
именно это я и называю "громоздкой вариадик шаблоно-функцией" и начинается: 1. под методы 2. под свободные функи. 3. под функторы. велосипедирование функционала std::function. нафига? учитывая, что: нечего убавить. решение уже является законченным дизайном.
0
|
|||
|
|
|||||||
| 01.08.2015, 11:37 | |||||||
Добавлено через 5 минут В boost::signals2 куда больше возможностей и не все охота их показывать/допускать.
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 01.08.2015, 11:47 | ||
|
хотя хз, зачем такое запрещать. это ж батону никак навредить не может. выглядит не очень читабельно, но это уже на совести пользователя. если что нибудь пойдет не так, std::function сам отобьется (бросит исключение, etc).
0
|
||
|
|
||||||
| 01.08.2015, 12:10 | ||||||
|
Добавлено через 4 минуты Добавлено через 16 минут Конструктор- будет жестко задавать "обработчик" нельзя будет его менять в рантайме. P.S.: std::function кстати подходит не лучшим способом ибо не исключает вероятности что будет ссылаться на удаленный объект, поэтому я и упамянул boost::signals2.
0
|
||||||
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
||||
| 01.08.2015, 12:25 | ||||
|
0
|
||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 01.08.2015, 14:18 | |||
|
Собственно, об этом Страуструп высказывался довольно четко:
0
|
|||
| 01.08.2015, 14:18 | |
|
Метод абстрактного класса не видит переменные дочернего класса
Как инициализировать члены класса, являющегося параметром шаблона Как обратится к объекту класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|