|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.04.2016, 19:24 | #1 |
Регистрация: 23.01.2016
Сообщений: 4
|
Объявление связанных классов
Имеется объявление двух классов. Заголовочный файл выглядит следующим образом:
Код:
Как корректно разнести объявления этих классов по разным файлам?
E-mail: alm43.alm43@gmail.com
|
18.04.2016, 20:43 | #2 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Как-то так:
bar.h: Код:
Код:
Код:
Код:
|
18.04.2016, 21:00 | #3 |
Регистрация: 23.01.2016
Сообщений: 4
|
Спасибо, компилируется.
E-mail: alm43.alm43@gmail.com
|
18.04.2016, 21:05 | #4 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
|
19.04.2016, 15:59 | #5 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Моё мнение, подобная конструкция уже ошибка. Например, если будут использоваться мьютексы, легко получить deadlock (да, на есть специальные мьютексы для таких ситуаций, но они более "дорогие"). В программе должна быть чёткая и ясная иерархия, я даже нумерую исходники (файл с меньшим номером не может заинклудить файл с большим или равным номером). Поэтому правильней реализовать следующую схему:
Код:
Последний раз редактировалось 220Volt; 19.04.2016 в 16:44. |
19.04.2016, 16:13 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
причем тут мютексы вообще?
ваш вариант усложнил структуру классов. и усложняет поддержку кода. добавили функцию в Bar, потом, ой, а она нужна для Foo, и переносим в Bar_Base. + излишняя раздробенность кода вышла. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
19.04.2016, 16:40 | #7 | ||
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Цитата:
Цитата:
ЗЫ: въехал про доп функцию )) Последний раз редактировалось 220Volt; 19.04.2016 в 16:51. |
||
19.04.2016, 17:08 | #8 | ||
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Цитата:
Что там у ТС и как далее - неизвестно. Цитата:
|
||
19.04.2016, 17:28 | #9 |
Регистрация: 23.01.2016
Сообщений: 4
|
220Volt, иерархия - не единственная возможная структура.
Например, бывают задачи, когда каждый элемент списка обязан помнить, какому списку он принадлежит.
E-mail: alm43.alm43@gmail.com
|
19.04.2016, 18:26 | #10 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Виртуальные функции нарушают иерархию. Если программа грамотно организована, то ничего кроме них нарушать не будет. А остальные перекрёсты от непродуманного проектирования. Но на 100% утверждать не буду (вывод на основе своего опыта, возможно ошибочен), я ведь не Страуструп.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C#] Сериализация списка классов (нескольких классов) | vermond | Помощь студентам | 3 | 06.06.2015 23:10 |
Объявление классов или пространств имён | Thez | Общие вопросы C/C++ | 1 | 12.03.2015 15:40 |
Объявление классов. Применение принципов ООП | get | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 26.05.2011 13:15 |
Создание классов и использование объектов классов при написании программ в среде C++. | Frozen inside | Помощь студентам | 0 | 16.04.2009 23:18 |
Лабораторная: объявление классов. Delphi 7 | Stail | Помощь студентам | 1 | 02.11.2008 19:53 |