Здравствуйте, 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;
};
шутю Ж-)