Re: Квалификация пространства имен в объявлении класса
От: Аноним  
Дата: 05.10.05 14:25
Оценка:
Здравствуйте, FreshMeat, Вы писали:

FM>Приветствую!


FM>Есть класс

FM>
FM>namespace my_lib
FM>{
FM>class Foo
FM>{

FM>private:
FM>    std::container<int> m_var0;
FM>    lib::class2         m_var1;
FM>    jet_another_lib::indispensable m_var2;
FM>};
FM>}
FM>

FM>Все прекрасно работает, но выглядит явная квалификация пространства имен перед каждой переменной как-то неизяшно.
FM>Душа просит чего-то наподобие:
FM>
FM>class Foo
FM>{
FM>using namespace std;
FM>using lib::class2; 
FM>using jet_another_lib::indispensable;
FM>//...
FM>private:
FM>    container<int> m_var0;
FM>    class2         m_var1;
FM>    indispensable  m_var2;
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;
};


шутю Ж-)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.