|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
Наследование методов31.07.2015, 21:10. Показов 1937. Ответов 13
Метки нет (Все метки)
Может мне стоит книжку почитать или получше подумать над структурой, но вопрос вот:
Есть у нас древо классов: base > s2 > s3 > s4 > ... И есть в base virtual void f(){ _act1_ } А в s2 virtual void f(){ _act2_ } А в s3 должен обратно быть метод base::virtual void f(){ _act1_ } И чтобы s4 также использовал base::virtual void f(){ _act1_ } Т.е. переопределение виртуального должно работать только для s2. Как вариант: переопределить обратно virtual void s3::f(){ base::f(); } Но могут быть и другие способы?
0
|
|
| 31.07.2015, 21:10 | |
|
Ответы с готовыми решениями:
13
Наследование методов C++ Наследование параметризованных методов Наследование и перегрузка методов |
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
| 31.07.2015, 21:24 | |
|
Eraston, переопределять что-то нужно тогда, когда действительно нужно переопределить. Функция сохраняет свой вид в производном классе, если в нем она не определена заново. Так что можете просто не указывать функцию в s3 and s4. Она сохранится
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
| 31.07.2015, 21:34 [ТС] | |
|
Она сохранится от родителя. у s3 и s4 будет метод s2::f(), а надо base::f();
Грубо говоря, есть у меня функция непереопределяемая SetParametr(), которую используют все наследники. Внутри SetParametr вызывается функция Refresh() (которая должна быть у всех наследников, чтобы её можно было использовать в SetParametr). А функция Refresh только должна обновить некоторые данные, при том, что обновление данных в последующих наследниках может не требоваться.
0
|
|
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
| 31.07.2015, 21:49 | |
|
UPD: прошу прощения, вы сами ответили на вопрос.
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|||||||
| 31.07.2015, 22:23 [ТС] | |||||||
|
tnk500, где?
Добавлено через 10 минут
0
|
|||||||
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
||||||
| 31.07.2015, 22:30 | ||||||
|
Eraston, в конце первого сообщения. Я невнимательно сообщение прочел. Насчет других способов, честно говоря, не знаю, но по-моему это довольно удобный способ. Ну если хотите - вызывайте функции так:
0
|
||||||
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|||
| 31.07.2015, 23:26 [ТС] | |||
|
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||
| 31.07.2015, 23:30 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 31.07.2015
Сообщений: 2
|
|
| 31.07.2015, 23:54 | |
|
есть еще идеи?
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
| 01.08.2015, 00:15 [ТС] | |
|
0
|
|
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
| 01.08.2015, 00:27 | |
|
Eraston, что значит "для одного случая"? Довольно логично ведь. Если наследуете класс от другого, который в свою очередь унаследован от самого первого, последний производный должен иметь больше общего со своим "отцом", чем со своим "дедушкой". Это в большинстве случаев. В других случаях достаточно вновь переопределить функцию, что вы и высказали.
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
| 01.08.2015, 00:33 [ТС] | |
|
tnk500, последний произвольный вполне имеет больше общего с отцом, кроме одной функции.
Можно, конечно, так поизвращаться:
0
|
|
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
| 01.08.2015, 08:27 | |
|
Не по теме: Eraston, два ненужных класса ради одной функции? А вы знаете толк в извращениях.
0
|
|
|
60 / 11 / 4
Регистрация: 09.09.2014
Сообщений: 182
|
|
| 01.08.2015, 12:30 [ТС] | |
|
0
|
|
| 01.08.2015, 12:30 | |
|
Помогаю со студенческими работами здесь
14
Наследование методов класса Наследование, и перегрузки методов Наследование классов. Конфликт методов ООП. Наследование переменных и методов от Базового класса к Дочернему и наоборот
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|