Можно ли создать иерархию пространства имен в C ++, которая напоминает, как это работает в C #. Например, если бы мне нужен был тип для обработки цветов в C #, я мог бы погрузиться в пространства имен, чтобы получить соответствующий тип, используя:
System.drawing.color;
тип. В этом случае кажется, что пространства имен разрешаются на уровне проекта и определяются пространствами имен, в которых содержится тип. Для разработчика, на которого нацелен этот код, они получают все это в своем автозаполнении и не оставляют поиск по папкам и файлам для этого типа. В C ++ мне, возможно, придется сначала включить соответствующий заголовочный файл, и в этот момент я чувствую, что мы уже столкнулись с проблемой поиска исходного кода для соответствующих типов и поиска того, какой файл включает эти типы. В C ++ это будет выглядеть так:
#include "Core/Color.h"Color c = new Color();
IDE предлагает мне небольшую помощь здесь. Я должен сделать поиск в каталоге для правильного типа. Кажется, что парадигма каталогов разрушается, если все не используют правильные имена файлов и структуру каталогов, что не всегда так.
Чтобы это исправить, похоже, что мне нужно не только придумать иерархию пространства имен для всех моих типов, что не такая большая проблема, но мне также нужно придумать иерархию заголовков, чтобы устранить проблема постоянного поиска кода, чтобы найти правильные файлы, которые включают эти типы.
Представляет ли основная иерархия заголовков проблему для компилятора, препроцессора или результирующего скомпилированного кода, поскольку у нас по сути будут все остальные заголовки вверх по цепочке (до определенного момента) включаться в новые файлы?
В конце я хочу найти способ помочь разработчикам, использующим этот код, дать своим IDE возможность погрузиться во все типы без необходимости делать все, что мы в настоящее время делаем. Возможно, уже есть способ быстро сделать это в среде IDE, и в этот момент мне не нужно будет использовать сам язык для решения такого рода проблем разработки, однако, похоже, я не могу его найти.
См. Следующее обсуждение SO и как это было обработано одним из пользователей SO
Совет по пространствам имен C ++
http://www.adamjamesnaylor.com/2012/10/23/NestedNamespacesInC.aspx
Других решений пока нет …