![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
AndreyVN |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 25.6.2004 Где: Здесь, в Волгогра де Репутация: нет Всего: нет |
Привет,
Люди, я всегда писал в процедурном стиле, теперь начал производить классы и сразу сталкнулся с проблемой: Создаю базовый класс TPort - здесь физический уровень работы с портом, от него произвожу class TDevice: public TPort - здесь система команд устройства. Все хорошо, все работает. А теперь, вдруг несколько однотипных устройств вешается на один ком порт. ![]() Как толко говорю Device[i] = new TDevice(); так сразу производится еще один экземпляр базового класса TPort. А мне надо, чтобы для нескольких TDevice один экземпляр TPort был. Как выкрутиться? |
|||
|
||||
Олег М |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
Тут надо не наследоваться, а вот так
|
||||
|
|||||
Dark Elf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 576 Регистрация: 26.12.2003 Где: Брисбен Репутация: 9 Всего: 10 |
Используй синглетон
Синглетон - это паттерн проектирования такой. Вообще если уж ты занялся ООП то мой тебе совет - займись изучением паттернов проектирования (а кому счас легко ![]() Самая лучшая книга по паттернам на мой взгляд - Э.Гаммы и компании (http://www.rsdn.ru/res/book/oo/design_patterns.xml) Подробности о том как реализовать синглетон в С++ http://www.rsdn.ru/res/book/cpp/alex.xml - её также можно скачать в электронном виде с anatolix.naumen.ru Удачи ![]() |
|||
|
||||
chipset |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Dark Elf
Ой.... ![]() Я бы спроектировал так:
ТЕперь просто добавляем в TPort девайсы разных типов (поскольку основание у них одинаковое они могут сохраняться) извлекаем, проверяем m_Type и где то в таком роде копаем дальше.... ЗЫ. Где то легко могу ошибиться, учусь ещё только ![]() .. ЗЫ. Какая ж у нас красивенькая подсветка ![]() ![]() Это сообщение отредактировал(а) chipset - 3.9.2004, 00:48 --------------------
|
||||
|
|||||
AndreyVN |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 25.6.2004 Где: Здесь, в Волгогра де Репутация: нет Всего: нет |
Вот спасибо, не ожидал что столько вариантов может быть.
|
|||
|
||||
srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
А если нужно наследование TDevice от TPort, то можно базовый класс TPort сделать виртуальным.
-------------------- Не смей читать мою подпись!!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |