![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Конструкторы, деструкторы и др. пропускаю, да бы не отвлекать внимания.
Абстрактный класс cPCIDSPCard объявлен, как друг для абстрактного класса cPCIDSP (такое допустимо?) Класс cPTMCD6 : public cPCIDSPCard вызывает метод ISR() класса cDSP6415 : public cPCIDSP
Метод cPCIDSP::virtual int ISR() = 0; делать public'ом нельзя. Сделать другом cPTMCD6 не очень |
|||
|
||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Ну вроде как в этом и суть -- кому нужно, тех и сделаешь друзьями. --------------------
|
||||
|
|||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Я в тупик попал с этим проектированием
Есть некая PCI плата. На этой плате есть несколько DSP. Я разбиваю на классы: создаю абстракцию для DSP и абстракцию платы. Потом конкретизирую для типа DSP и платы. По приходу интерапта, драйвер берет метод ПЛАТА::ISR() платы. В свою очередь этот ПЛАТА::ISR() должен вызвать ISR() каждого DSP на плате. |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Вообще-то эта строка не нужна для объявления дружбы. А так - сделай сделай в базовом DSP классе виртуальным метод ISR и объяви там же дружбу базовой схеме. Что-то типа того
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Так я же так и сделал, но у меня не идет З.Ы.: MSVC6 |
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Нет. Ты вызываешь ф-цию из наследуемого класса, а не из базового. А дружба в с++ не наследуется.
Это сообщение отредактировал(а) Mayk - 16.12.2005, 13:39 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Правильно Mayk советует.
Дружбу надо локализовать в базовых классах. Только чтобы было погибче, сделай в своем cPCIDSPCard защищенный хелпер (только для наследников):
Тогда потомки cPCIDSPCard смогут реализовывать любые схемы опроса потомков cPCIDSP -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |