下面的代码将在行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 ++中做这样的事情?
答案 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,
... };