| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > раскрыть ns в класс-scope |
| Автор: mes 8.5.2009, 12:48 | ||||||
| столкнулся с вопросом есть ряд типов определенных в namespace.
есть класс
хотелось бы вместо тайпдефинга, просто открыть пространство имен в класс
Может у кого нибудь есть предложение по боле-менее симпатичному решению данного вопросика ? В душе теплится (хоть и малая) надежда, что я просто синтаксиса для данного случая не знаю. Заранее спасибо за участие в теме |
| Автор: mes 8.5.2009, 14:03 | ||||
| насколько я понял безымянное пространство имен должно быть видно только внутри файла в котором оно определено. Попробовал приучить его:
проверяем
Кто-нибудь может разъяснить мое непонимание ситуации ? |
| Автор: mes 8.5.2009, 14:27 | ||||
вот я никак и не пойму в чем отличие безымяннного неймспейса, от неиспользования неймспейса. т.е в чем разница нижеприведенных кодов :
П.С. что выражено в приведенной ссылке из стандарта мне тоже неясно.. Или отупел или день магнитных бурь. |
| Автор: azesmcar 8.5.2009, 14:33 | ||||||||||
в том что
ведет себя как еслиб было написано
а разница в том что доступ к глобальным переменным из другого translation unit -a extern-ом не получится, так как обявленные в анонимном пространстве имен глобальные переменные имеют internal linkage. в случае простого обявления типа (к примеру структуры) разницы быть не должно, поскольку анонимные неймспейсы используют как замену глобальным статическим переменным.
Добавлено через 14 минут и 14 секунд Как вариант решения изначального вопроса..не подойдет написать свой класс в том же неймспейсе?
|
| Автор: Lazin 8.5.2009, 14:50 | ||||||||
допустим у нас есть заголовочный файл Foo.h
мы его подключаем в 2х срр файлах, A и B, в результате получим ошибку во время компоновки, можно объявить переменную как статическую, а можно поместить в анонимное пространство имен foo.h
|
| Автор: mes 8.5.2009, 14:54 | ||||||||||
спасибо за разъяснение, работу безымянного неймспейса я представлял несколько иначе.
тоже думал над этим вариантом, но есть внутреннее чувство дисгармонии, поэтому хотелось бы что нибудь посимпатичней. Добавлено @ 15:07 на текущий момент остановился на на такой форме записи :
|
| Автор: azesmcar 8.5.2009, 15:21 |
| mes решения получше не вижу и кстати не думаю что стоит искать |
| Автор: mes 8.5.2009, 16:05 |
Решение опробовал - эта часть рефакторинга прошла успешно. azesmcar, Lazin, спасибо за участие и пояснения. |
| Автор: J0ker 8.5.2009, 17:04 |
ИМХО изначальный вариант с typedef куда логичней и безопасней |
| Автор: azesmcar 8.5.2009, 17:07 |
открывать неймспейс в cpp файле вполне нормально. Что здесь конкретно понижает безопасность? Мне кажется это больше дело вкуса, чем безопасности. |