typedef существующий тип enum, возможно? - PullRequest
1 голос
/ 28 апреля 2011

Учитывая следующее:

namespace otherns
{
    enum MyEnum_e { MyEnum_YES, MyEnum_NO };
}

namespace myns
{
    typedef otherns::MyEnum_e MyEnum_e;
}

Почему следующее недопустимо?

int e = myns::MyEnum_YES;

Я получаю сообщение об ошибке компилятора:

'MyEnum_YES' is not a member of 'myns'

1 Ответ

4 голосов
/ 28 апреля 2011

Поскольку значения перечисления находятся в пространстве имен otherns, а не в качестве дочернего элемента MyEnum_e: для ссылки на MyEnum_YES, вы набираете otherns::MyEnum_YES.

.

namespace otherns
{
    namespace MyEnum_e_space {
    enum MyEnum_e { MyEnum_YES, MyEnum_NO };
    }
    using namespace MyEnum_e_space;
}

namespace myns
{
    using namespace otherns::MyEnum_e_space;
}

Хотя использование using не рекомендуется ..

...