Использование вложенных namespace и представление простого пользовательского дос
От: Александр Шамин  
Дата: 07.12.18 07:09
Оценка:
Есть личная библиотека, в которой используется древовидная структура namespace (например базовое пространство имён base_lib и вложенные в него деревья namespace). Теперь появилась необходимость дать доступ к внутренней функции доступ, например она лежит в base_lib::sys::ct::meta::some_funcl() (системная часть/компиляция/метапрограммирование). Как открыть доступ к данному компоненту, дабы можно было обратиться как base_lib::somefuncl().


Пробовал использовать using namespace, в заголовочном файле функции, но тогда помещается весь namespace для доступа, можно ли точечно перенести ?
namespace cpp
Re: Использование вложенных namespace и представление простого пользовательского
От: _niko_ Россия  
Дата: 07.12.18 07:29
Оценка: +1
Здравствуйте, Александр Шамин, Вы писали:

АШ>Есть личная библиотека, в которой используется древовидная структура namespace (например базовое пространство имён base_lib и вложенные в него деревья namespace). Теперь появилась необходимость дать доступ к внутренней функции доступ, например она лежит в base_lib::sys::ct::meta::some_funcl() (системная часть/компиляция/метапрограммирование). Как открыть доступ к данному компоненту, дабы можно было обратиться как base_lib::somefuncl().



АШ>Пробовал использовать using namespace, в заголовочном файле функции, но тогда помещается весь namespace для доступа, можно ли точечно перенести ?


Вот так:
namespace base_lib
{
    using sys::ct::meta::some_funcl;
}
Re: Использование вложенных namespace и представление простого пользовательского
От: Carc Россия https://vk.com/gosha_mazov
Дата: 07.12.18 07:29
Оценка:
Здравствуйте, Александр Шамин, Вы писали:

АШ>Есть личная библиотека, в которой используется древовидная структура namespace (например базовое пространство имён base_lib и вложенные в него деревья namespace). Теперь появилась необходимость дать доступ к внутренней функции доступ, например она лежит в base_lib::sys::ct::meta::some_funcl() (системная часть/компиляция/метапрограммирование). Как открыть доступ к данному компоненту, дабы можно было обратиться как base_lib::somefuncl().



АШ>Пробовал использовать using namespace, в заголовочном файле функции, но тогда помещается весь namespace для доступа, можно ли точечно перенести ?

Использовать using-объявление, вместо using-директивы.
//в вызывающем коде пишем
using base_lib::sys::ct::meta::some_funcl;
…
//теперь вызовы some_funcl(…) будут использовать base_lib::sys::ct::meta::some_funcl()
some_funcl(…);// поехали ©
Aml Pages Home
Re[2]: Использование вложенных namespace и представление простого пользовательск
От: Александр Шамин  
Дата: 07.12.18 07:50
Оценка:
Здравствуйте, _niko_, Вы писали:

__>Здравствуйте, Александр Шамин, Вы писали:


АШ>>Есть личная библиотека, в которой используется древовидная структура namespace (например базовое пространство имён base_lib и вложенные в него деревья namespace). Теперь появилась необходимость дать доступ к внутренней функции доступ, например она лежит в base_lib::sys::ct::meta::some_funcl() (системная часть/компиляция/метапрограммирование). Как открыть доступ к данному компоненту, дабы можно было обратиться как base_lib::somefuncl().



АШ>>Пробовал использовать using namespace, в заголовочном файле функции, но тогда помещается весь namespace для доступа, можно ли точечно перенести ?


__>Вот так:

__>
__>namespace base_lib
__>{
__>    using sys::ct::meta::some_funcl;
__>}
__>


Спасибо! Отлично сработало.
Re: Использование вложенных namespace и представление простого пользовательского
От: B0FEE664  
Дата: 07.12.18 09:16
Оценка: 3 (1)
Здравствуйте, Александр Шамин, Вы писали:

АШ>Есть личная библиотека, в которой используется древовидная структура namespace (например базовое пространство имён base_lib и вложенные в него деревья namespace). Теперь появилась необходимость дать доступ к внутренней функции доступ, например она лежит в base_lib::sys::ct::meta::some_funcl() (системная часть/компиляция/метапрограммирование). Как открыть доступ к данному компоненту, дабы можно было обратиться как base_lib::somefuncl().


Я не знаю все условия вашей задачи, но похоже, что я бы сделал немного иначе. Завёл бы alias и пользовался им:
namespace base_sub = base_lib::sys::ct::meta;
base_sub::somefuncl();

Или так, с аббревиатурой:
namespace bscm = base_lib::sys::ct::meta;
bscm::somefuncl();

При таком стиле мне лично код читать легче.

здесь
И каждый день — без права на ошибку...
Re[2]: Использование вложенных namespace и представление простого пользовательск
От: rg45 СССР  
Дата: 07.12.18 09:54
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Я не знаю все условия вашей задачи, но похоже, что я бы сделал немного иначе. Завёл бы alias и пользовался им:

BFE>Или так, с аббревиатурой:
BFE>При таком стиле мне лично код читать легче.

Ну один подход не исключает другого. Где-то лучше так, где-то эдак, а где-то и так, и эдак.
--
Не можешь достичь желаемого — пожелай достигнутого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.