c ++ ссылается на одноименное пространство имен - PullRequest
9 голосов
/ 20 мая 2011

учитывая:

namespace root { namespace parent { namespace childa
    class hard_to_get_at{};
}}}

namespace root { namespace parent { namespace childb
    // how do I refer refer to namespace childb relative to the current namespace ?
    ..::hard_to_get_at instance_of_childa_class; // psuedo syntax
}}}

Нужно ли указывать полный путь к пространству имен?Есть ли способ обойти это?

Ответы [ 3 ]

6 голосов
/ 20 мая 2011

Далее должно работать:

namespace root{
namespace parent{
namespace childb{

// some function where you want to use class hard_to_get_at
void foo()
{
   childa::hard_to_get_at obj;
   // do stuff
}

} // namespace childb
} // namespace parent
} // namespace root
2 голосов
/ 20 мая 2011

Я не пробовал, но насколько я помню

childa::hard_to_get_at   sibling;

должен работать из childb без необходимости определения псевдонима пространства имен. это свойство разрешения пространства имен C ++, которое может перемещаться вверх по иерархии вложения для поиска пространств имен.

2 голосов
/ 20 мая 2011

Вы можете использовать псевдоним пространства имен в childb

namespace childa = root::parent::childa;

, а затем

childa::hard_to_get_at   sibling;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...