Y
yancheng.cheok
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
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