![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
столкнулся с вопросом
есть ряд типов определенных в namespace.
есть класс
хотелось бы вместо тайпдефинга, просто открыть пространство имен в класс
Может у кого нибудь есть предложение по боле-менее симпатичному решению данного вопросика ? В душе теплится (хоть и малая) надежда, что я просто синтаксиса для данного случая не знаю. Заранее спасибо за участие в теме ![]() Это сообщение отредактировал(а) mes - 8.5.2009, 15:14 |
||||||
|
|||||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
насколько я понял безымянное пространство имен должно быть видно только внутри файла в котором оно определено.
Попробовал приучить его:
проверяем
Кто-нибудь может разъяснить мое непонимание ситуации ? |
||||
|
|||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
mes
А почему он должен был не попасть? Добавлено через 2 минуты и 48 секунд
над этим думаю ![]() Это сообщение отредактировал(а) azesmcar - 8.5.2009, 14:20 |
||||
|
|||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот я никак и не пойму в чем отличие безымяннного неймспейса, от неиспользования неймспейса. т.е в чем разница нижеприведенных кодов :
П.С. что выражено в приведенной ссылке из стандарта мне тоже неясно.. ![]() Или отупел или день магнитных бурь. Это сообщение отредактировал(а) mes - 8.5.2009, 14:32 |
||||
|
|||||
azesmcar |
|
||||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
в том что
ведет себя как еслиб было написано
а разница в том что доступ к глобальным переменным из другого translation unit -a extern-ом не получится, так как обявленные в анонимном пространстве имен глобальные переменные имеют internal linkage. в случае простого обявления типа (к примеру структуры) разницы быть не должно, поскольку анонимные неймспейсы используют как замену глобальным статическим переменным.
Добавлено через 14 минут и 14 секунд Как вариант решения изначального вопроса..не подойдет написать свой класс в том же неймспейсе?
Это сообщение отредактировал(а) azesmcar - 8.5.2009, 14:42 |
||||||||||
|
|||||||||||
Lazin |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
допустим у нас есть заголовочный файл Foo.h
мы его подключаем в 2х срр файлах, A и B, в результате получим ошибку во время компоновки, можно объявить переменную как статическую, а можно поместить в анонимное пространство имен foo.h
|
||||||||
|
|||||||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
спасибо за разъяснение, работу безымянного неймспейса я представлял несколько иначе.
тоже думал над этим вариантом, но есть внутреннее чувство дисгармонии, поэтому хотелось бы что нибудь посимпатичней. Добавлено @ 15:07 на текущий момент остановился на на такой форме записи :
Это сообщение отредактировал(а) mes - 8.5.2009, 15:17 |
||||||
|
|||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
mes
![]() решения получше не вижу ![]() и кстати не думаю что стоит искать Это сообщение отредактировал(а) azesmcar - 8.5.2009, 15:22 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Решение опробовал - эта часть рефакторинга прошла успешно. azesmcar, Lazin, спасибо за участие и пояснения. ![]() |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
ИМХО изначальный вариант с typedef куда логичней и безопасней |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |