Доступ к значениям перечисления из другого класса - PullRequest
5 голосов
/ 01 декабря 2011

В моем проекте у меня определено перечисление в классе, которое используется в этом классе.Во время рефакторинга это перечисление было перемещено в другой класс.Поэтому я просто typedef отредактировал его в своем исходном классе, например:

class A {
public:
  enum E {e1, e2};
};
class B {
public:
  typedef A::E E;
};

Теперь определения переменных, возвращаемые значения, параметры функций и т. Д. Работают отлично.Только когда я хочу получить доступ к значениям enum внутри моего второго класса, мне все равно придется квалифицировать их с именем класса Survig, например,
, например, E e = A::e1;

. Есть ли способ избежать этого, илия должен скопировать это в каждое вхождение значений enum?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Вы помещаете каждое перечисление во вложенный класс, который можно ввести в пределах своего собственного класса:

class A {
public:
  struct E { enum EnumType { e1, e2 } };
};
class B {
public:
  typedef A::E E;
};

Тогда это просто E::EnumType вместо E, но вы получаете полный автоимпорт.

0 голосов
/ 01 декабря 2011

Если вы не знакомы с c ++ 11, вы можете взглянуть на enum классы.

...