如何将一个类的嵌套枚举用作另一个类的嵌套枚举

How use nested enum of one class as a nested enum of another?

本文关键字:嵌套 枚举 另一个 一个      更新时间:2023-10-16

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

#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++中做这样的事情?

将枚举放入a和B都可以继承的基类中

使用

struct B: A
{
};
不是

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

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

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

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