如何使用一个类的嵌套枚举作为另一个类的嵌套枚举?

时间:2011-08-03 09:12:16

标签: c++ enums

下面的代码将在行enum en = A::en;上给出编译错误,但它描述了我想要做的事情(使A的嵌套枚举成为B的嵌套枚举)。

#include <iostream>
using namespace std;
struct A
{
    enum a_en{X = 0, Y = 1};
};
struct B
{
    enum b_en = A::a_en; //syntax error
};
int main()
{
    cout << B::X << endl;
    return 0;
}

所以问题是如何在c ++中做这样的事情?

3 个答案:

答案 0 :(得分:5)

将枚举放在A和B都可以继承的基类中。

答案 1 :(得分:0)

使用

struct B: A
{
};

而不是

struct B
{
    enum b_en = A::a_en;
};

答案 2 :(得分:0)

当类/结构以这种方式相关时,你应该继承它们。将公共枚举放在基类中,以便所有派生(相关)类都可以访问它。

MFC'CFile类定义了枚举,CStdioFile和其他派生类可以使用:

enum OpenFlags {
        modeRead =         (int) 0x00000,
        modeWrite =        (int) 0x00001,
...    };