Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как лучше организовать структуру подключ. файлов? |
Автор: Elfet 5.2.2010, 13:44 |
Всем привет! Может кто-нибудь мне рассказать о том как лучше в проектах организовывать структуру подключаемых файлов? Вот тут у меня есть наш проект: http://code.google.com/p/smart-flow/source/browse/trunk/#trunk/SmartFlowLib/Source И чем больше файлов становится тем сложнее получается структура. Заранее спасибо! |
Автор: Elfet 5.2.2010, 14:10 |
Это библиотека (и интерфейс) для решения гидродинамических задач. Вот например там нам нужны следующие классы описывающие сетку: Mesh - сама сетка с узлами, ребрами, элементами. Node - узел (должен тоже видеть Mesh) Edge - ребро (должен видеть элемент, узел, меш) Element - элемент (должен видеть Mesh, Node, Element, Edge и так далее) Короче каждый класс должен быть доступен в другом. + у нас есть boost, и другие библиотеки. |
Автор: mes 5.2.2010, 16:20 |
а тогда объясните для чего Вам в библиотеке нужны Console и Progress ? они, имхо, явно не вписываются в Вашу модель .. |
Автор: Elfet 5.2.2010, 17:19 |
mes, ну это так. Вспомогательные классы. Как лучше сделать так что бы все видели всех? |
Автор: mes 5.2.2010, 18:20 |
а должны ли их вобще видеть ?! прежде чем решать что и как сделать, нужно понять что требуется и как должно выглядить. Ну так опишите одним-двумя предложениями какие обязанности возложены в частности на Progress. |
Автор: mr_kaspersky 6.2.2010, 00:24 | ||||||
a.hpp
a.cpp
b.hpp
Вот так можно классы друг с другом познакомить. |
Автор: mes 6.2.2010, 01:32 |
mr_kaspersky, а Вы пробовали заглянуть в проект по приведенной выше ссылке ? там вaми написанное уже применяется ![]() |
Автор: Elfet 6.2.2010, 01:40 |
mr_kaspersky, да, это хорошо, когда всего два класса. А если их уже 5 и каждый нужно с каждым связать? |
Автор: mr_kaspersky 6.2.2010, 02:51 |
Да, совсем я обленился по ссылкам ходить! А что мешает это же использовать для многих классов? Создать отдельный хидер с объявлением всех существующих в проекте классов и инклудить его повсюду. А весь обобщенный код с шаблоннами, где происходит обращение к методам соответствующих классов при их пересечении, в отдельные файлы распихать. Если уж архитектура того требует. |
Автор: нуп 6.2.2010, 20:42 |
все инклюды запихиваю в один х файл, его и подключаю везде |
Автор: Леопольд 7.2.2010, 13:12 |
Когда у тебя проект разрастается до определённых размеров, из-за этого могут возникнуть рекурсивные инклюды, которые, как известно, недопустимы. Например, в одном из хидеров, тебе необходимо подключить другой, потому что, в данном случае, форвард декларейшина недостаточно. Иногда, проще всего нарисовать как это всё взаимосвязано. |