Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > ограничить область видимости хидера. как? |
Автор: boostcoder 13.6.2011, 17:55 |
всем снова доброго дня. вопрос следующий: при подключении хидера в хидер, каким образом можно сделать так, что чтоб содержимое первого было доступно только хидеру подключившему его, но не более? спасибо. |
Автор: kemiisto 13.6.2011, 17:58 |
Очень просто. Использовать нормальный модульный язык, а не язык-калеку. ![]() |
Автор: YDean 13.6.2011, 18:25 |
запихнуть include в namespace |
Автор: mes 13.6.2011, 18:26 |
в том виде в каком задан вопрос - никак. Добавлено через 1 минуту и 20 секунд и это ограничит доступность во всех местах кроме текущего хидера? Добавлено через 2 минуты и 36 секунд и за что kemiisto все время минусят ? ведь иногда он прав и говорит довольно правильные вещи.. |
Автор: YDean 13.6.2011, 18:33 |
Смотря, что нужно: явная невидимость или полная недоступность. (в заголовке темы: видимость, а в тексте: доступность) |
Автор: mes 13.6.2011, 18:42 |
покажите "ограничение на хидер" для любого из случаев ![]() |
Автор: boostcoder 13.6.2011, 18:44 |
значит никак. всем спасибо. |
Автор: mes 13.6.2011, 18:54 |
если уточните, что именно надо может быть и найдется решение.. |
Автор: boostcoder 13.6.2011, 18:57 | ||||
mes, вот смотрите... есть первый хидер:
и есть второй, который использует первый:
вопрос в том, что нужно сделать, чтоб my_type был доступен только в "2.hpp". но нигде более, даже если "2.hpp" инклудидтся куда-то еще. |
Автор: YDean 13.6.2011, 19:02 |
тогда и struct base не будет видна в остальных местах? |
Автор: mes 13.6.2011, 19:10 |
решение очевидное : не включать 1.hpp в 2.hpp.. как именно этого добиться зависит от того, что есть my_type .. Вам нужно для pimpl или что то другое преследуете ? |
Автор: YDean 13.6.2011, 19:35 | ||
если бы в struct base был указатель на my_type, можно было бы задекларировать только имя, а полную декларацию my_type и всех, кто с ней работает, вынести (или подключить) в CPP.
|
Автор: boostcoder 14.6.2011, 18:52 |
это невозможно, ибо 2.hpp использует то, что находится в 1.hpp да нет. просто любопытство. |