Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ограничить область видимости хидера. как? 
V
    Опции темы
boostcoder
Дата 13.6.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



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

спасибо.

PM WWW   Вверх
kemiisto
Дата 13.6.2011, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Очень просто. Использовать нормальный модульный язык, а не язык-калеку. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
YDean
Дата 13.6.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.9.2009

Репутация: нет
Всего: 1



запихнуть include в namespace
PM   Вверх
mes
Дата 13.6.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



в том виде в каком задан вопрос - никак.

Добавлено через 1 минуту и 20 секунд
Цитата(YDean @  13.6.2011,  17:25 Найти цитируемый пост)
запихнуть include в namespace 

и это ограничит доступность во всех местах кроме текущего хидера?

Добавлено через 2 минуты и 36 секунд
и за что kemiisto все время минусят ? ведь иногда он прав и говорит довольно правильные вещи.. 



--------------------
PM MAIL WWW   Вверх
YDean
Дата 13.6.2011, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.9.2009

Репутация: нет
Всего: 1



Цитата(mes @  13.6.2011,  18:26 Найти цитируемый пост)
и это ограничит доступность во всех местах кроме текущего хидера?

Смотря, что нужно: явная невидимость или полная недоступность.
(в заголовке темы: видимость, а в тексте: доступность)

Это сообщение отредактировал(а) YDean - 13.6.2011, 18:36
PM   Вверх
mes
Дата 13.6.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(YDean @  13.6.2011,  17:33 Найти цитируемый пост)
смотря, что нужно: явная невидимость или полная недоступность.

покажите "ограничение на хидер" для любого из случаев smile


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 13.6.2011, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



значит никак.
всем спасибо.

PM WWW   Вверх
mes
Дата 13.6.2011, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  13.6.2011,  17:44 Найти цитируемый пост)
значит никак.

если уточните, что именно надо может быть и найдется решение.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 13.6.2011, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



mes, вот смотрите...
есть первый хидер:
Код

// 1.hpp

struct my_type {};



и есть второй, который использует первый:
Код

// 2.hpp

struct base {

   my_type type;
};



вопрос в том, что нужно сделать, чтоб my_type был доступен только в "2.hpp". но нигде более, даже если "2.hpp" инклудидтся куда-то еще.
PM WWW   Вверх
YDean
Дата 13.6.2011, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.9.2009

Репутация: нет
Всего: 1





тогда и struct base не будет видна в остальных местах?

Это сообщение отредактировал(а) YDean - 13.6.2011, 19:36
PM   Вверх
mes
Дата 13.6.2011, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



решение очевидное : не включать 1.hpp в 2.hpp.. 
как именно этого добиться зависит от того, что есть my_type .. 
Вам нужно для pimpl или что то другое преследуете ?




--------------------
PM MAIL WWW   Вверх
YDean
Дата 13.6.2011, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 7.9.2009

Репутация: нет
Всего: 1



если бы в struct base был указатель на my_type, можно было бы задекларировать только имя, а полную декларацию my_type и всех, кто с ней работает, вынести (или подключить) в CPP.

Код

// 2.hpp
struct my_type;

struct base {
   my_type *type;
};

PM   Вверх
boostcoder
Дата 14.6.2011, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  13.6.2011,  19:10 Найти цитируемый пост)
решение очевидное : не включать 1.hpp в 2.hpp.. 

это невозможно, ибо 2.hpp использует то, что находится в 1.hpp

Цитата(mes @  13.6.2011,  19:10 Найти цитируемый пост)
Вам нужно для pimpl или что то другое преследуете ?

да нет. просто любопытство.

PM WWW   Вверх
mes
Дата 14.6.2011, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  14.6.2011,  17:52 Найти цитируемый пост)
это невозможно, ибо 2.hpp использует то, что находится в 1.hpp

_использовать_ может по разному.. без описания задачи трудно оценить реальную возможность расцепления.. 
но если так тянет "скрыть от всех 1.hpp", то наверное все таки лазейка есть..

Добавлено через 2 минуты и 7 секунд
тут вот у шаблонов проблема с расцеплением из за отсутствия нормального экспорта.. 
но и то при правильной архитектуре не сильно загромаждают жизненное пространство.. 



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0915 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.