Экспортировать часть пространства имен класса - PullRequest
5 голосов
/ 13 октября 2010

У меня есть класс, который включает enum:

class appearance{
  // ... stuff ...
  enum color {BLUE, RED, GREEN};
};

Я хотел бы присоединить часть пространства имен (с using), чтобы я мог ссылаться на значение BLUE просто как BLUE, а не appearance::BLUE.В то же время я хотел бы оставить enum в пределах class{}, поскольку я считаю, что это наиболее естественно.Я пробовал различные комбинации namespace и using, но безрезультатно.

Есть предложения ???

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Не думаю, что это можно сделать.AFAIK, вы можете использовать using appearance::color в другом классе или структуре, как указано здесь .

При использовании объявления в классе A может быть указано одно из следующих значений:

  • Член базового класса A

  • Член анонимного объединения, являющегося членом базового класса A

  • Перечислитель для типа перечисления, который является членом базового класса A

1 голос
/ 13 октября 2010

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

namespace enums{
        enum color
        {BLUE
        ,RED
        ,GREEN};
} // namespace enums


using namespace enums;
class Foo
{
    int Bar(){return BLUE;}
}

что-то подобное должно работать ...

1 голос
/ 13 октября 2010

Я не думаю, что вы можете сделать это с помощью класса enum.Вероятно, единственный способ достичь чего-то похожего - это заключить перечисление в свое отдельное пространство имен, а затем использовать его там, где это необходимо, чтобы быть в перечислении.в другое пространство имен в C ++? Я показываю один из возможных способов импортировать перечисление из одного пространства имен в другое, но я не верю, что это сработает (в любом случае) для этого случая класса.

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