Двусмысленное пространство имен - PullRequest
0 голосов
/ 14 ноября 2018

Следующая реализация выдает ошибку: «ссылка на n1 неоднозначна»

namespace n1 // (0)
{
    namespace n1
    {
        int x;
    }

    namespace n1
    {
        int y;
    }
}

using namespace n1; // (1)
//using namespace n1::n1; // (2)

int main()
{
    cout << n1::n1::x<<endl;
}

Комментируя (1) и используя (2), проблема решается.

Используя другое пространство имен в (0), будут работать варианты (1) и (2).

Любое объяснение?

1 Ответ

0 голосов
/ 14 ноября 2018

Поскольку вы using namespace n1;, первое n1 в cout << n1::n1::x<<endl; не знает, должно ли оно совпадать на внешнем n1 или n1 в n1.

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