У меня такая ситуация:
class Inner
{
public:
enum myEnum;
myEnum getInnerEnumValue();
};
class Outer
{
private:
Inner myInner;
public
Inner::myEnum getOuterEnumValue()
{
return myInner.getInnerEnumValue();
}
};
Класс Inner - это довольно низкоуровневая оболочка для аппаратного API, а класс Outer - дополнительный уровень, обеспечивающий более приятные интерфейсы для некоторых функций ипереводить между различными структурами данных.Я хочу, чтобы внешний мир использовал Outer и забыл о Inner.
Однако Inner определяет метод enum и getter, это именно то, что мне нужно для получения определенной информации.Я хотел бы использовать это перечисление как тип возврата из Outer, просто передавая его напрямую.Но если я объявлю функцию getEnumValue()
, как показано выше, я нарушу инкапсуляцию, заставив внешний мир включить файл заголовка для Inner.
Как я могу поднять определение enum из Inner, не переписывая идентичный код, ипредставить его как публичное перечисление Outer?