Making Forward Declaration Class's enum Member Visible
-
hello all, how can i make, a forward declaration class's enum member, being visible by another class? consider the following case, ---------------------------- dog.h ---------------------------- #ifndef DOG_H #define DOG_H // class forward declaration. class cat; class dog { public: enum dog_enum { d0, d1, d2 }; void speak(cat *c); }; #endif ---------------------------- cat.h ---------------------------- #ifndef CAT_H #define CAT_H #include "dog.h" class cat { public: void speak(dog *d, dog::dog_enum e); }; #endif The above cat and dog just work fine. Now, let me create an enum type for cat too. ---------------------------- dog.h ---------------------------- #ifndef DOG_H #define DOG_H // class forward declaration. class cat; class dog { public: enum dog_enum { d0, d1, d2 }; // OPPS! HOW DO WE FORWARD DECLARE ENUM??? void speak(cat *c, cat::cat_enum e); }; #endif ---------------------------- cat.h ---------------------------- #ifndef CAT_H #define CAT_H #include "dog.h" class cat { public: enum cat_enum { c0, c1, c2 }; void speak(dog *d, dog::dog_enum e); }; #endif My question is, how can "dog" see the cat_enum, which is re-inside cat? I was understand that forward declaration for enum is not allowed in c++. Is there any workaround for this? Thank you very much