I'm wondering if it's possible to forward declare an enum that's defined within another class scope. For example, consider the following:
//A.h class A { public: enum class type: unsigned long { /*some stuff*/ } };
Now, in another header I'd like to forward declare the 'type' enum (suppose class B below has a function that does something with A::type)
//B.h enum A::type; //use of undefined type 'A' class B { public: UseTypeEnum(A::Type&); };
This doesn't work either:
//B.h class A; enum A::type; //still use of undefined type class B...
There's no problem if the enum is declared at global scope in A.h.
Is there any way to do this?
Forward Declaration of Enums (C++11) BCC32 introduces forward declaration of enums. You can declare an enumeration without providing a list of enumerators. Such declarations would not be definitions and can be provided only for enumerations with fixed underlying types.
In C++, Forward declarations are usually used for Classes. In this, the class is pre-defined before its use so that it can be called and used by other classes that are defined before this.
A forward declaration allows us to tell the compiler about the existence of an identifier before actually defining the identifier. In the case of functions, this allows us to tell the compiler about the existence of a function before we define the function's body.
In computer programming, a forward declaration is a declaration of an identifier (denoting an entity such as a type, a variable, a constant, or a function) for which the programmer has not yet given a complete definition.
You can't declare nested types outside the class definition.
If you need to use them outside the class, you will have to either include the class definition, or move them into a namespace.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With