Здравствуйте, FreshMeat, Вы писали:
FM>Вопрос — есть какой-либо способ красиво, не используя using-директиву перед объявлением класса, получить доступ к содержимому используемых пространств имен?
Навскидку ничего умнее чем
namespace detail {
using namespace x;
using namespace y;
using z::foo;
class bar {
...
};
}
using detail::bar;
не приходит в голову.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Квалификация пространства имен в объявлении класса
Здравствуйте, FreshMeat, Вы писали:
КД>>Она просит typedef-ов определенных в рамках класса. Это факт — я с ней как-то по-душам поговорил КД>>... FM>Угук, единственное решение, которое в голову приходило, но его использование с шаблонами не шибко красиво выглядит.
Я предпочитаю использовать символьные имена от typedef-ов, ибо они могут быть гораздо меньше, чем шаблоны с параметрами. Итераторы потом упаришься определять.
Опять же, смотришь на секцию класса с typedef-определениями и видишь, что ему для жизни надо
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re: Квалификация пространства имен в объявлении класса
Все прекрасно работает, но выглядит явная квалификация пространства имен перед каждой переменной как-то неизяшно.
Душа просит чего-то наподобие:
class Foo
{
using namespace std;
using lib::class2;
using jet_another_lib::indispensable;
//...private:
container<int> m_var0;
class2 m_var1;
indispensable m_var2;
};
}
Вопрос — есть какой-либо способ красиво, не используя using-директиву перед объявлением класса, получить доступ к содержимому используемых пространств имен?
Спасибо.
Хорошо там, где мы есть! :)
Re: Квалификация пространства имен в объявлении класса
От:
Аноним
Дата:
05.10.05 14:25
Оценка:
Здравствуйте, FreshMeat, Вы писали:
FM>Приветствую!
FM>Есть класс FM>
FM>Все прекрасно работает, но выглядит явная квалификация пространства имен перед каждой переменной как-то неизяшно. FM>Душа просит чего-то наподобие: FM>
FM> FM>Вопрос — есть какой-либо способ красиво, не используя using-директиву перед объявлением класса, получить доступ к содержимому используемых пространств имен?
не хочешь? вот тебе изврат, который на самолм деле НЕ ЭКВИВАЛЕНТЕН:
class my_lib {
public:
class Foo {
public:
void SetY(int val){y=val;}
int y;
};
};
class CClient: public my_lib{
public:
void DoSmth(){
x.SetY(5);
g.SetY(8);
printf("%d\n",x.y);
printf("%d\n",g.y);
}
private:
Foo x;
Foo g;
};
шутю Ж-)
Re[2]: Квалификация пространства имен в объявлении класса
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Она просит typedef-ов определенных в рамках класса. Это факт — я с ней как-то по-душам поговорил КД>...
Угук, единственное решение, которое в голову приходило, но его использование с шаблонами не шибко красиво выглядит.
Хорошо там, где мы есть! :)
Re[4]: Квалификация пространства имен в объявлении класса
Здравствуйте, Коваленко Дмитрий, Вы писали:
КД> Я предпочитаю использовать символьные имена от typedef-ов, ибо они могут быть гораздо меньше, чем шаблоны с параметрами. Итераторы потом упаришься определять.
Это безусловно. Минус вот где — если используется несколько псевдонимов в одном хедере, например для map, vector, auto_ptr, имхо, код становится затруднительным для понимания (чем больше typedef, тем запущеннее ситуация).
КД>Опять же, смотришь на секцию класса с typedef-определениями и видишь, что ему для жизни надо
<из внешних пространств имен>
Интересная идея