Подтвердить что ты не робот

С++ Переслать декларацию класса

Мне интересно, можно ли переслать объявить перечисление, определенное в пределах другого класса. Например, рассмотрим следующее:

//A.h
class A
{
public:
    enum class type: unsigned long { /*some stuff*/ }
};

Теперь в другом заголовке я хотел бы переслать объявление "type" enum (предположим, что класс B ниже имеет функцию, которая делает что-то с типом A::)

//B.h
enum A::type; //use of undefined type 'A'

class B
{
public:
    UseTypeEnum(A::Type&);
};

Это также не работает:

//B.h
class A;
enum A::type; //still use of undefined type

class B...

Нет проблем, если перечисление объявлено в глобальной области в A.h.

Есть ли способ сделать это?

4b9b3361

Ответ 1

Вы не можете объявлять вложенные типы вне определения класса.

Если вам нужно использовать их вне класса, вам придется либо включить определение класса, либо переместить их в пространство имен.