Доступ к переменной внутри анонимного пространства имен (C++)

У меня есть следующий код, и я не знаю, как я могу получить доступ к х внутри анонимного пространства имен в этом параметре. Подскажите пожалуйста как?

#include <iostream>

int x = 10;

namespace
{
    int x = 20;
}

int main(int x, char* y[])
{
    {
        int x = 30; // most recently defined
        std::cout << x << std::endl; // 30, local
        std::cout << ::x << std::endl; // 10, global
        // how can I access the x inside the anonymous namespace?
    }

    return 0;
}

2 ответа

Решение

Вы не можете!

Вы не можете получить доступ к членам пространства имен по его имени, потому что у него его нет.
Это анонимно.

Вы можете получить доступ к этим членам только благодаря тому, что они уже включены в область действия.

Вы должны получить доступ к нему из функции в пределах той же анонимной области:

#include <iostream>

int x = 10;

namespace
{
    int x = 20;
    int X() { return x; }
}

int main(int x, char* y[])
{
    {
        int x = 30; // most recently defined
        std::cout << x << std::endl; // 30, local
        std::cout << ::x << std::endl; // 10, global
        std::cout << X() << std::endl; // 20, anonymous
        // how can I access the x inside the anonymous namespace?
    }

    return 0;
}
Другие вопросы по тегам