22 / 22 / 8
Регистрация: 05.01.2012
Сообщений: 282
|
|
1 | |
Как убрать функцию из дочернего класса?22.03.2015, 20:06. Показов 3646. Ответов 8
Метки нет (Все метки)
Представим что имеется 3 класса: A, B и C;
Класс А - базовой(родительский). Класс В - наследуется от А. Класс С соответственно от В. В родительском классе А имеется некая функция void fun1(). Естественно, что она присутствует в классах В и С. Вопрос: как сделать так, что бы она была доступна в классе В, но ее не было в классе С. Все до чего додумался - это объявил функцию как виртуальную, и в классе С переопределяю ее, делая пустой. В таком случаи при вызове она ничего не делает. Но как избавиться от нее вообще? Есть ли способ это сделать?
0
|
22.03.2015, 20:06 | |
Ответы с готовыми решениями:
8
Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса? Как построить экземпляр дочернего класса на основе готового экземпляра базового класса? Как передать в метод класса Menu указатель на метод дочернего класса? Как получить доступ в private из дочернего класса? |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
|
||||||
22.03.2015, 20:24 | 2 | |||||
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
22.03.2015, 20:39 | 3 | |||||
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
||||||
22.03.2015, 21:04 | 4 | |||||
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
22.03.2015, 21:24 | 5 | |||||
так вроде же речь не за паблик интерфейс.
а насчет доступности функции-члена класса А в классе С:
1
|
22 / 22 / 8
Регистрация: 05.01.2012
Сообщений: 282
|
|
22.03.2015, 23:46 [ТС] | 6 |
hoggy, IntelliSense: удаленная функция переопределяет не удаленную функция "B::f"
Добавлено через 8 минут zss, если сделать так, то функцию нельзя будет вызивать вне класса.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|
22.03.2015, 23:50 | 7 |
пересмотреть идеологию
первое что приходит в голову, не самое лучшее и в классе А нет функции void fun1(). а есть она в классе, допустим, А1 который наследуется от А
0
|
23.03.2015, 00:05 | 8 | |||||
Ну, еще можно в закрытую часть через using засунуть:
0
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
23.03.2015, 09:29 | 9 |
Здесь явно проблема с архитектурой т.к. наследование - это не просто "сократить небольшую часть кода". Оно показывает связь классов. public наследование говорит о том, что класс предок является разновидностью базового и для него справедливо всё его поведение.
Я бы сделал класс A без "ненужного" метода, а от него бы ветвил уже детей. Если что - модификаторами конечно можно запретить доступ, но метод в классе всё равно будет присутствовать. Добавлено через 1 минуту Для просвещения
0
|
23.03.2015, 09:29 | |
23.03.2015, 09:29 | |
Помогаю со студенческими работами здесь
9
Как вызвать метод дочернего класса при приведении типов? Может ли метод родительского класса обратиться к полю дочернего класса Перегрузка оператора >> для дочернего класса от базового виртуального класса Как из класса получить доступ к элементу дочернего окна главной формы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |