я имею проблему, подобную this question, но с одной дополнительной глубиной:со ссылкой на двоюродные имена
namespace root { namespace parent1 { namespace childa {
class hard_to_get_at{};
}}}
namespace root { namespace parent2 { namespace childb {
// how do I refer refer to namespace childb relative to the current namespace ?
void someFunc()
{
parent1::childa::hard_to_get_at instance; // does not work
}
}}}
, когда я попытался выше, я получаю сообщение об ошибке
об ошибке: «корень: : parent2 :: childb :: parent1 :: childa 'не был объявлен
Я не понимаю, почему это не работает, у меня создается впечатление, что он должен. Я действительно не хочу использовать декларацию использования внутри функции someFunc
.
это происходит в г ++ 4.5 с опцией C++ 0x включен
Возможно, вам не хватает включить в свой код или множество важных деталей в вопросе. Если вложения являются правильными, тогда у вас может быть несколько пространств имен/классов с тем же именем, и компилятор выбирает неправильный. [Проверить это] (http://ideone.com/bsy8q) –
Ваш комментируемый код компилируется для меня. –