![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
проблема следующая:
class Base {...}; class Derived: public/private Base {...}; Возможно ли следующие наследование: class Test: public Base, public Derived {...}; |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
да
-------------------- qqq |
|||
|
||||
| Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Билдер такое откомпилить не даст, да и зачем?
-------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
maxim1000 что значит ДА?
подскажи как реализовать таку схему такое у меня не компилиться Ars class Base - некий стандартный обработчик Derived - имеет свою обработку Test - свою Но при этом Derived подчинен Test'у и имее свои методы отличные от Test |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Это почему? Если Base не производный от TObject, то позволяет в соответствии со стандартом С++ -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Ars |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Прошу прощения, это Warning: W8024 Base class 'Base' is also a base class of 'Derived'. И, истинно, он прав. Какой смысл повторно наследовать от Base?
А в 6-м билдере дозволено множественное наследование и потомков TObject -------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
упс...
немного ошибся показалось, что это ничему не противоречит, а оно запрещено (по крайней мере пробовал в VC, BC) там как раз выдаются ошибки P.S. а зачем така схема? -------------------- qqq |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
По идее, принципам ООП такое определение не противоречит. Вопрос "зачем это надо", по-моему, не к месту. Мало ли зачем человеку два экземляра базового класса. Но не компилиться. Говорит, что потом к этому базовому классу не добраться.
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Это справедливо только для наследования интерфейсов (полнсотью абстрактных классов). Для "нормальных" классов ограничения на наследование с TObject сохраняются -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Ars |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
Значит, с точки зрения компиллятора это принципам ООП всетаки противоречит. Для него возникает неразрешимая неоднозначность
-------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
||||||
|
|||||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Да, по-моему, это вообще чушь, за чем два раза наследовать одно и тоже?
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
shedon
Пример: class cA {...}; class cB: public/private cA {...}; class cD: public/private cA {...}; class cE: public/private cB, public/private cD {...}; Такое допустимо, и наследуется два раза одно и тоже А вот так: class cE: public/private cB, public/private cA {...}; не работает! Почему? |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Такое допустимо, т.к. ты наследуешь два разных класса(cB и cD), у которых один базовый класс, такое может быть(класс cA в таком случае наследуется не явно). А вот когда ты наследуешь cB и соответственно наследуешь cA, плюс ещё явно наследуешь cA. Зачем это нужно ? -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
shedon
И вопрос был в том, что возможно ли реализовать такую схему? А не в том зачем это нужно? В том то все и дело, что это нужно. Пример: есть некоторый стандартный обработчик, допустим class cA{...} - отвечающий и обрабатывающий работу таймеров. class cB: public cA {...} - имеет свои методы на события cA. class cС: public cA {...} - имеет свои методы на события cA. Но в тоже время class cС должен также включать в себя методы class cB. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
но ведь класс cB включает методы класс cA, значит, при подключении cB в класс cC в нем и так будут методы обоих классов
-------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |