В нашем проекте (C ++ 14) мы разделили наше программное обеспечение на несколько компонентов по функциональной схеме системы. Каждый из модулей находится в своем собственном пространстве имен, встроенном в общее пространство имен для системы. Мы используем CMake в качестве нашей системы сборки, и каждый компонент представляет собой библиотеку stati c, которая может быть собрана отдельно и в конце связана вместе.
Теперь во многих компонентах определены c типы данных, определенные, как класс или структура, например, для времени, совокупность полей данных для совместной обработки и так далее. Эти структуры данных определяются локально в компоненте, где создаются данные, которые они содержат.
Но. Когда мне теперь нужно получить доступ к одной из этих структур данных из других компонентов, я должен включить заголовок из указанного компонента c и иметь зависимость между этими двумя компонентами. И поскольку это общий подход, у нас есть много зависимостей между нашими программными компонентами, что легко приводит к циклическим c зависимостям. : (
В мире C я бы создал GlobalDataStructures.h
и добавил бы все структуры данных, которые используются в программной системе.
Что такое (современный) подход C ++ к этому? Каковы лучшие практики?