Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как лучше организовать структуру подключ. файлов?


Автор: Elfet 5.2.2010, 13:44
Всем привет!

Может кто-нибудь мне рассказать о том как лучше в проектах организовывать структуру подключаемых файлов?

Вот тут у меня есть наш проект: http://code.google.com/p/smart-flow/source/browse/trunk/#trunk/SmartFlowLib/Source

И чем больше файлов становится тем сложнее получается структура.

Заранее спасибо!

Автор: mes 5.2.2010, 13:55
Цитата(Elfet @  5.2.2010,  12:44 Найти цитируемый пост)
Может кто-нибудь мне рассказать о том как лучше в проектах организовывать структуру подключаемых файлов?

может тогда стоит немножко рассказать о самом проекте ? 
что он  из себя представляет, какие возможности ожидаются (но только не в деталях, а в общих стуктурных чертах)
smile

Автор: Elfet 5.2.2010, 14:10
Это библиотека (и интерфейс) для решения гидродинамических задач. 

Вот например там нам нужны следующие классы описывающие  сетку:

Mesh - сама сетка с узлами, ребрами, элементами.
Node - узел (должен тоже видеть Mesh)
Edge - ребро (должен видеть элемент, узел, меш)
Element - элемент (должен видеть Mesh, Node, Element, Edge и так далее)

Короче каждый класс должен быть доступен в другом.

+ у нас есть boost, и другие библиотеки.

Автор: mes 5.2.2010, 16:20
Цитата(Elfet @  5.2.2010,  13:10 Найти цитируемый пост)
Вот например там нам нужны следующие классы описывающие  сетку:

а тогда объясните для чего Вам в библиотеке нужны Console и Progress  ? они, имхо, явно не вписываются в Вашу модель ..



Автор: Elfet 5.2.2010, 17:19
mes, ну это так. Вспомогательные классы. 

Как лучше сделать так что бы все видели всех? 

Автор: mes 5.2.2010, 18:20
Цитата(Elfet @  5.2.2010,  16:19 Найти цитируемый пост)

Как лучше сделать так что бы все видели всех? 

а должны ли их вобще видеть ?!
прежде чем решать что и как сделать, нужно понять что требуется и как должно выглядить.

Цитата(Elfet @  5.2.2010,  16:19 Найти цитируемый пост)
Вспомогательные классы. 

Ну так опишите одним-двумя предложениями какие обязанности возложены в частности на Progress.



Автор: mr_kaspersky 6.2.2010, 00:24
a.hpp
Код


class B;

class A 
{
  B m_b;
};


a.cpp
Код

#include "a.hpp"
#include "b.hpp"

// работа с интерфейсом класса B


b.hpp
Код

#include <a.hpp>
 
class B
{
  A m_a;
};


Вот так можно классы друг с другом познакомить.

Автор: mes 6.2.2010, 01:32
mr_kaspersky, а Вы пробовали заглянуть в проект по приведенной выше ссылке ?
там вaми написанное уже применяется smile

Автор: 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
Цитата(нуп @  6.2.2010,  20:42 Найти цитируемый пост)
все инклюды запихиваю в один х файл, его и подключаю везде 

Когда у тебя проект разрастается до определённых размеров, из-за этого могут возникнуть рекурсивные инклюды, которые, как известно, недопустимы. Например, в одном из хидеров, тебе необходимо подключить другой, потому что, в данном случае, форвард декларейшина недостаточно.

Иногда, проще всего нарисовать как это всё взаимосвязано.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)