例如:
基类头文件有:
enum FOO
{
FOO_A,
FOO_B,
FOO_C,
FOO_USERSTART
};
那么派生类有:
enum FOO
{
FOO_USERA=FOO_USERSTART
FOO_USERB,
FOO_USERC
};
为了清楚地说明我的用法,它是为了拥有一个事件处理程序,其中基类有事件,然后派生类可以添加事件。派生类事件处理程序将检查它的事件,如果该事件不适合它,那么它将将该事件传递给基类。
class Base
{
public:
virtual void HandleFoo(FOO event);
};
class Derived: public Base
{
public:
void HandleFoo(FOO event);
};
void Base::HandleFoo(FOO event)
{
switch(event)
{
case FOO_A:
/* do stuff */
break;
case FOO_B:
/* do stuff */
break;
case FOO_B:
/* do stuff */
break;
}
}
void Derived::HandleFoo(FOO event)
{
switch(event)
{
case FOO_USERA:
/* do stuff */
break;
case FOO_USERB:
/* do stuff */
break;
case FOO_USERB:
/* do stuff */
break;
default:
/* not my event, must be for someone else */
Base::HandleFoo(event);
break;
}
}
最佳答案
没有。一旦编译器看到 },就需要能够决定枚举是否适合 char、short、int 或 long。
所以如果基类头有
enum Foo {
A,
B,
MAX = 1<<15
};
编译器可能会决定枚举适合 16 位。然后它可以使用它,例如布置基类时。如果您稍后能够将 1<<31 添加到枚举,则基类枚举成员将无法保存枚举值之一。
关于c++ - 在 C++ 中 : Is it possible to have a named enum be continued in a different file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267367/