5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
||||||
1 | ||||||
Доступ к функции предка09.02.2024, 12:45. Показов 2535. Ответов 18
Есть такая конструкция:
Спасибо.
0
|
09.02.2024, 12:45 | |
Ответы с готовыми решениями:
18
Как наладить доступ из потомка к свойствам предка? TreeView. Получить имя предка предка, выбрав потомка Нестандартный вопрос.Как получить доступ к переменным функции из другой функции? this на div предка |
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
||||||
09.02.2024, 13:31 | 2 | |||||
vlad2, например
подправил
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
||||||
09.02.2024, 13:44 [ТС] | 3 | |||||
Спасибо, Алексей1153.
Прошу прощения, ошибся в коде, там сложнее. Надо так:
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
||||||
09.02.2024, 13:50 | 4 | |||||
vlad2, а, ну тогда
только смысл я не понял
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
|
09.02.2024, 14:09 [ТС] | 5 |
Причём доступа к TAClass и TBClass у меня нет.
Добавлено через 2 минуты Алексей1153, т.е. у меня есть доступ к protected функции "деда", минуя "сына"? Добавлено через 10 минут Дело в том, что мне нужно изменить вид компоненты. В моей старой версии RAD Studio я это делал без труда, т.к. Func была определёна в TAClass, а в поздней версии RAD - в TBClass. И делая то же самое, это перестало работать, т.е. Func, который я прописал в TMyClass - это не та функция, которая в TBClass.
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|||||||||||
09.02.2024, 14:18 | 6 | ||||||||||
vlad2,
вот так
разработчики неспроста упрятали функцию. Думаю, менять её поведение не особо можно
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
||||||
09.02.2024, 16:12 [ТС] | 7 | |||||
Спасибо, Алексей1153, попробуем.
Но честно говоря, сомнения есть). Добавлено через 1 час 36 минут Не совсем понятно: если в *.h файле я объявляю, например,
Добавлено через 13 минут А в теле этой функции использую приватные члены класса TMyClass. Не приходилось сталкиваться с такой ситуацией.
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|
09.02.2024, 17:48 | 8 |
vlad2, тело функции уже имеется - в предке. Это вкидывание функции предка в паблик
https://onlinegdb.com/ayZsJqruw
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
||||||
12.02.2024, 10:37 [ТС] | 9 | |||||
Алексей1153, мне нужно изменить код этой функции, т.е. подменить её на свою. И мой вопрос в том, как это сделать.
Когда было прямое наследование, то писал просто:
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|
12.02.2024, 12:49 | 10 |
унаследоваться от TAClass, в наследнике переопределить виртуальную функцию, а затем экземпляр наследника подсунуть вместо TAClass*
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
|
12.02.2024, 13:23 [ТС] | 11 |
Алексей1153, видимо в моём случае, унаследоваться от TBClass и там переопределить виртуальную функцию? А как её потом переопределить в TAClass? Непонятно. В моём случае функция определена (или переопределена) в TBClass - предок TAClass. В TAClass она не переопределена.
А если унаследоваться от TBClass и от TAClass? Или это бессмысленно?
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|
12.02.2024, 13:29 | 12 |
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
|
12.02.2024, 13:32 [ТС] | 13 |
потому что функция определена в нём, а не в TAClass (см. #3).
Т.е. у меня такая цепочка: TBClass -> TAClass -> TMyClass. И мне надо переопределить функцию, которая теперь находится в TBClass, а не в TAClass, как раньше.
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|
12.02.2024, 13:37 | 14 |
vlad2, так функция же виртуальная
есть класс TAClass. Где-то используется указатель на его экземпляр. Делаем класс class X:public TAClass , где переопределяем функцию. И вместо экземпляра класса TAClass создаём экземпляр класса X , указатель на который используем где нужно.
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
|
12.02.2024, 14:11 [ТС] | 15 |
Теоретически понятно, только нигде не использую напрямую указатель на экземпляр TAClass, использую только TMyClass*. Т.е. есть стандартная компонента TAClass, я на её базе создаю свою (TMyClass), которой пользуюсь.
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
|
13.02.2024, 10:47 [ТС] | 16 |
Получается, подменить функцию через предка невозможно, если она не вынесена в предка.
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|
13.02.2024, 10:55 | 17 |
vlad2, если это какой-то компонент на форме, то скорее всего, можно, но как это в билдере сделать - я не в курсе.
Например, в студии и QtCreator можно применить promotion - на форму кладётся стандартный компонент, затем в настройках указывается, какой производный класс для него реально использовать
0
|
5 / 5 / 2
Регистрация: 06.04.2011
Сообщений: 290
|
|
13.02.2024, 11:06 [ТС] | 18 |
Алексей1153, да, это компонента на форме, и в новой версии её, похоже, придётся делать самому. Спасибо за помощь.
0
|
фрилансер
5861 / 5400 / 1106
Регистрация: 11.10.2019
Сообщений: 14,432
|
|
13.02.2024, 11:29 | 19 |
0
|
13.02.2024, 11:29 | |
13.02.2024, 11:29 | |
Помогаю со студенческими работами здесь
19
Нахождение предка рекурсивно процедура поиска предка Поиск предка и потомков Шаблоны. Выбор предка Переопределение метода предка Вызов методов предка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией
В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
|
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации
В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
|
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий
В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
|
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO
/ / https:/ / leetcode. com/ studyplan/ top-interview-150/
package topInterview
. . .
|
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
|
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
|
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
|
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
|
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации.
Исполнитель Чертежник работает на координатной плоскости, где может. . .
|
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
|
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
|
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
|